Excel工具类

Excel需要导入的jar包

<!--  导出excel  -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.16</version>
    </dependency>

Excel工具类的代码

import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExcelUtil {

    public static void datasToExcel(List<String> fieldList, List<Map<String, Object>> dataList, String fileDir, String fileName){
        SXSSFWorkbook wbs = new SXSSFWorkbook(2000);
        CellStyle headStyle = wbs.createCellStyle();
        headStyle.setBorderBottom(CellStyle.BORDER_THIN);
        headStyle.setBorderLeft(CellStyle.BORDER_THIN);
        headStyle.setBorderRight(CellStyle.BORDER_THIN);
        headStyle.setBorderTop(CellStyle.BORDER_THIN);
        headStyle.setAlignment(CellStyle.ALIGN_CENTER);
        Font font = wbs.createFont();
        wbs.createFont().setBoldweight(Font.BOLDWEIGHT_BOLD);
        headStyle.setFont(font);
        CellStyle contentStyle = wbs.createCellStyle();
        contentStyle.setBorderBottom(CellStyle.BORDER_THIN);
        contentStyle.setBorderLeft(CellStyle.BORDER_THIN);
        contentStyle.setBorderRight(CellStyle.BORDER_THIN);
        contentStyle.setBorderTop(CellStyle.BORDER_THIN);

        // 设置工作蒲的标签名
        SXSSFSheet sheet =  wbs.createSheet("firstSheet");
        SXSSFRow headRow = sheet.createRow(0);
        // 设置excel表头字段列
        for (int i = 0; i < fieldList.size(); i++) {
            SXSSFCell headCell = headRow.createCell(i);
            headCell.setCellStyle(headStyle);
            headCell.setCellValue(fieldList.get(i));
        }
        // 设置excel内容列
        for(int i = 0; i < dataList.size(); i++){
            SXSSFRow contentRow = sheet.createRow(i + 1);
            for (int j = 0; j < fieldList.size(); j++) {
                SXSSFCell contentCell = contentRow.createCell(j);
                contentCell.setCellStyle(contentStyle);

                Object o = dataList.get(i).get(fieldList.get(j));
                contentCell.setCellValue(o==null?"":String.valueOf(o));
            }
        }

        try {
            String filePath = new StringBuilder(fileDir).append(File.separator).append(fileName).toString();
            File file = new File(filePath);
            OutputStream fileOut = new FileOutputStream(file);
            wbs.write(fileOut);
            fileOut.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            wbs.dispose();
        }
    }
    // field:字段
    public static void main(String[] args) {
        List<String> fieldList = new ArrayList<>();
        fieldList.add("id");
        fieldList.add("name");
        fieldList.add("age");

        List<Map<String, Object>> dataList = new ArrayList<>();

        Map<String, Object> map = new HashMap<>();
        map.put("id", "1");
        map.put("name", "zqd");
        map.put("age", 22);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("id", "2");
        map2.put("name", "zqd2");
        map2.put("age", 23);

        Map<String, Object> map3 = new HashMap<>();
        map3.put("id","3");
        map3.put("name","zaq");
        map3.put("age",21);

        dataList.add(map);
        dataList.add(map2);
        dataList.add(map3);

        // 文件的路径
        String fileDir = "D:\\git_test\\test";
        // 文件名   Excel:excel:2007-2016版用的是:xlsx 拓展名   excel:97-2003版用的是:xls 拓展名
        String fileName = "test.xlsx";

        datasToExcel(fieldList, dataList, fileDir, fileName);
    }
}

相关推荐