From b20fd29dc3864405af4afa0aeb99d13d74fbfcdc Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 21 三月 2024 15:07:44 +0800 Subject: [PATCH] 解决导出xls异常 --- src/main/java/com/lf/server/helper/ExcelHelper.java | 68 ++++++++++++++++++++++++++++++--- 1 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/lf/server/helper/ExcelHelper.java b/src/main/java/com/lf/server/helper/ExcelHelper.java index 6eba6ad..5589cdd 100644 --- a/src/main/java/com/lf/server/helper/ExcelHelper.java +++ b/src/main/java/com/lf/server/helper/ExcelHelper.java @@ -2,14 +2,17 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.enums.WriteDirectionEnum; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.read.metadata.ReadSheet; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillConfig; +import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.lf.server.annotation.ExcelHead; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; /** * Excel甯姪绫� @@ -50,7 +53,7 @@ reader.read(sheet); } - + reader.finish(); return list; } @@ -64,10 +67,61 @@ */ public static <T> ExcelHead getExcelHead(Class<?> clazz) { ExcelHead head = clazz.getAnnotation(ExcelHead.class); - if (head != null) { - return head; + + return head; + } + + /** + * 鍐欏叆Excel妯℃澘 + * + * @param source 婧愭枃浠讹紙妯℃澘锛� + * @param target 鐩綍鏂囦欢 + * @param map 閿�煎Map + * @param listMap 鍒楄〃Map + */ + public static <T> void writeToTemplate(String source, String target, Map<String, Object> map, Map<String, List<T>> listMap) { + // 鏍规嵁妯℃澘鍐欏叆鏁版嵁锛屽鏋滅洰鏍囨枃浠朵笉瀛樺湪锛屽垯鑷姩鍒涘缓鏂囦欢 + ExcelWriter excelWriter = EasyExcel.write(target).withTemplate(source).build(); + + // 鍦ㄥ伐浣滅翱0涓啓鍏ユ暟鎹紝濡傛灉妯℃澘涓笉瀛樺湪缁冧範宸ヤ綔绨匡紝鍒欎細鍦ㄧ洰鏍囨枃浠朵腑鑷姩鍒涘缓 + WriteSheet writeSheet = EasyExcel.writerSheet(0).build(); + + // 鍨傜洿鍐欏叆鏁版嵁锛屽鏋滆姘村钩鍐欏叆锛屽皢VERTICAL鏇挎崲涓篐ORIZONTAL + FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); + + // 鍐欏叆鏁版嵁 + if (null != map && map.size() > 0) { + excelWriter.fill(map, writeSheet); + } + if (null != listMap && listMap.size() > 0) { + listMap.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet)); } - return null; + // 缁撴潫鍐欏叆 + excelWriter.finish(); + } + + /** + * 鍐欏叆Excel妯℃澘 + * + * @param source 婧愭枃浠讹紙妯℃澘锛� + * @param target 鐩綍鏂囦欢 + * @param map 鏁版嵁婧� + */ + public static <T> void writeToTemplate(String source, String target, Map<String, List<T>> map) { + // 鏍规嵁妯℃澘鍐欏叆鏁版嵁锛屽鏋滅洰鏍囨枃浠朵笉瀛樺湪锛屽垯鑷姩鍒涘缓鏂囦欢 + ExcelWriter excelWriter = EasyExcel.write(target).withTemplate(source).build(); + + // 鍦ㄥ伐浣滅翱0涓啓鍏ユ暟鎹紝濡傛灉妯℃澘涓笉瀛樺湪缁冧範宸ヤ綔绨匡紝鍒欎細鍦ㄧ洰鏍囨枃浠朵腑鑷姩鍒涘缓 + WriteSheet writeSheet = EasyExcel.writerSheet(0).build(); + + // 鍨傜洿鍐欏叆鏁版嵁锛屽鏋滆姘村钩鍐欏叆锛屽皢VERTICAL鏇挎崲涓篐ORIZONTAL + FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); + + // 鍐欏叆鏁版嵁 + map.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet)); + + // 缁撴潫鍐欏叆 + excelWriter.finish(); } } -- Gitblit v1.9.3