将多个实体类集合写入同一个 Excel 文件的不同 Sheet 页

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import lombok.extern.slf4j.Slf4j;

import java.util.List;
import java.util.Map;

@Slf4j
public class ExcelUtil {
    /**
     * 将多个实体类集合写入同一个 Excel 文件的不同 Sheet 页
     *
     * @param dataMap        实体类集合映射,键为 Sheet 索引,值为对应的实体类集合
     * @param outputFilePath 输出 Excel 文件路径
     * @param excelName      Excel 文件名
     * @param sheetNames     Sheet 名称映射,键为 Sheet 索引,值为对应的 Sheet 名称
     */
    public static void writeDataToExcel(Map<Integer, List<?>> dataMap, String outputFilePath, String excelName, Map<Integer, String> sheetNames) {
        try (ExcelWriter excelWriter = EasyExcel.write(outputFilePath + "\\" + excelName).excelType(ExcelTypeEnum.XLSX).build()) {
            for (Map.Entry<Integer, List<?>> entry : dataMap.entrySet()) {
                int sheetIndex = entry.getKey();
                List<?> data = entry.getValue();
                String sheetName = sheetNames.get(sheetIndex);
                WriteSheet writeSheet = EasyExcel.writerSheet(sheetIndex, sheetName).head(data.get(0).getClass()).build();
                BatchUtil.execute(data, 1000, batchData -> excelWriter.write(batchData, writeSheet));
            }
        } catch (Exception e) {
            log.error("writeDataToExcel error: ", e);
        }
    }
}
posted @   blog_sulan  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示