潘志宝
10 天以前 4be2ba94827668f07282cdab2eb7d84e2f6d7b1e
动态列excel
已修改1个文件
25 ■■■■■ 文件已修改
iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-framework/iailab-common-excel/src/main/java/com/iailab/framework/excel/core/util/ExcelUtils.java
@@ -1,5 +1,7 @@
package com.iailab.framework.excel.core.util;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.write.handler.AbstractRowWriteHandler;
import com.iailab.framework.excel.core.handler.SelectSheetWriteHandler;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.converters.longconverter.LongStringConverter;
@@ -10,6 +12,7 @@
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
/**
@@ -63,4 +66,26 @@
        response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, StandardCharsets.UTF_8.name()));
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
    }
    public static void write(HttpServletResponse response, String filename, String sheetName,
                             List<String> column, List<List<Object>> data) throws IOException {
        List<List<String>> head = new ArrayList<>();
        if (column != null && column.size() > 0) {
            for (String columnName : column) {
                List<String> item = new ArrayList<>();
                item.add(columnName);
                head.add(item);
            }
        }
        EasyExcelFactory.write(response.getOutputStream())
                .head(head)
                // handle
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                .sheet(sheetName).doWrite(data);
        // 设置 header 和 contentType。写在最后的原因是,避免报错时,响应 contentType 已经被修改了
        response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, StandardCharsets.UTF_8.name()));
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
    }
}