package org.sxkj.fw.utils; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import org.springblade.core.excel.util.ExcelUtil; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; public class JaExcelUtil extends ExcelUtil { /** * 导出多个sheet到Excel文件 * @param response HTTP响应对象 * @param fileName 文件名 * @param sheetDataMap 包含sheet名称和对应数据列表的映射 * @param clazz 数据类型对应的类 */ public static void exportMultipleSheets(HttpServletResponse response, String fileName, java.util.Map> sheetDataMap, Class clazz) throws IOException { try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding(StandardCharsets.UTF_8.name()); fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); ExcelWriter excelWriter = null; try { excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build(); int sheetIndex = 0; for (java.util.Map.Entry> entry : sheetDataMap.entrySet()) { String sheetName = entry.getKey(); List dataList = entry.getValue(); if (dataList != null && !dataList.isEmpty()) { com.alibaba.excel.write.metadata.WriteSheet writeSheet = EasyExcel.writerSheet(sheetIndex++, sheetName).build(); excelWriter.write(dataList, writeSheet); } } } finally { if (excelWriter != null) { excelWriter.finish(); } } } catch (Throwable $ex) { throw $ex; } } }