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 <T> void exportMultipleSheets(HttpServletResponse response, String fileName,
|
java.util.Map<String, List<T>> sheetDataMap, Class<T> 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<String, List<T>> entry : sheetDataMap.entrySet()) {
|
String sheetName = entry.getKey();
|
List<T> 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;
|
}
|
}
|
}
|