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);
}
}
}
标签:实体类,Sheet,excel,Excel,param,import
From: https://www.cnblogs.com/yifan1028/p/18328892