From 96ee4688564a38b9e65ebdcdada44c9a56235650 Mon Sep 17 00:00:00 2001 From: wany <13995595726@qq.com> Date: Thu, 5 Sep 2024 10:01:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=97=A5=E5=9D=87=E6=B0=B4?= =?UTF-8?q?=E4=BD=8D=E5=B9=B4=E6=8A=A5=E5=AF=BC=E5=87=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gunshi/project/xyt/util/ExcelUtil.java | 89 ++++++++++--------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/gunshi/project/xyt/util/ExcelUtil.java b/src/main/java/com/gunshi/project/xyt/util/ExcelUtil.java index f8e5e39..22b57f3 100644 --- a/src/main/java/com/gunshi/project/xyt/util/ExcelUtil.java +++ b/src/main/java/com/gunshi/project/xyt/util/ExcelUtil.java @@ -6,7 +6,6 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; -import com.alibaba.excel.write.merge.LoopMergeStrategy; import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy; import com.alibaba.excel.write.metadata.WriteSheet; import com.gunshi.project.xyt.util.excel.ExcelFillCellMergeStrategy; @@ -28,15 +27,15 @@ public class ExcelUtil { /** * 导出excel * - * @param list 导出数据集合,加动态表头 + * @param list 导出数据集合,加动态表头 * @param filename 工作表的名称 - * @param clazz 实体类 - * @param response 响应体 + * @param clazz 实体类 + * @param response 响应体 */ - public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response,String sheetName) { + public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response, String sheetName) { OutputStream out = null; try { - out = getOutputStream(filename,response); + out = getOutputStream(filename, response); ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) //是否自动关闭流 .autoCloseStream(Boolean.FALSE) @@ -46,7 +45,7 @@ public class ExcelUtil { builder.doWrite(list); } finally { try { - if (out != null){ + if (out != null) { out.flush(); out.close(); } @@ -59,20 +58,20 @@ public class ExcelUtil { /** * 导出excel,合并指定单元格 * - * @param list 导出数据集合,加动态表头 + * @param list 导出数据集合,加动态表头 * @param filename 工作表的名称 - * @param clazz 实体类 - * @param response 响应体 + * @param clazz 实体类 + * @param response 响应体 */ - public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response,String sheetName,Integer type) { + public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response, String sheetName, Integer type) { OutputStream out = null; try { - out = getOutputStream(filename,response); - if(type == 1){ - OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36,36,1,2); - OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36,36,3,6); - OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36,36,7,8); - OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36,36,9,12); + out = getOutputStream(filename, response); + if (type == 1) { + OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36, 36, 1, 2); + OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36, 36, 3, 6); + OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36, 36, 7, 8); + OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36, 36, 9, 12); ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) //是否自动关闭流 .autoCloseStream(Boolean.FALSE) @@ -84,29 +83,31 @@ public class ExcelUtil { .registerWriteHandler(strategy3) .sheet(sheetName); builder.doWrite(list); - }else{ - LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(1,2,0); - OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33,37,0,0); - OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38,38,0,1); - OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38,38,3,5); - OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38,38,7,9); - OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38,38,11,13); + } else { + OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33, 37, 0, 0); + OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38, 38, 0, 1); + OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38, 38, 3, 5); + OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38, 38, 7, 9); + OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38, 38, 11, 13); ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) //是否自动关闭流 .autoCloseStream(Boolean.FALSE) .registerWriteHandler(new VoteTitleHandler(filename)) - .registerWriteHandler(loopMergeStrategy) .registerWriteHandler(strategy1) .registerWriteHandler(strategy2) .registerWriteHandler(strategy3) .registerWriteHandler(strategy4) .registerWriteHandler(strategy5) .sheet(sheetName); + for (int i = 2; i < 33; i++) { + OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(i, i, 0, 1); + builder.registerWriteHandler(strategy); + } builder.doWrite(list); } } finally { try { - if (out != null){ + if (out != null) { out.flush(); out.close(); } @@ -118,17 +119,18 @@ public class ExcelUtil { /** * 导出动态列 - * @param head 表头 - * @param data 数据 + * + * @param head 表头 + * @param data 数据 * @param filename * @param response * @param sheetName * @param */ - public static void exportExcel(List> head,List data, String filename, HttpServletResponse response,String sheetName) { + public static void exportExcel(List> head, List data, String filename, HttpServletResponse response, String sheetName) { OutputStream out = null; try { - out = getOutputStream(filename,response); + out = getOutputStream(filename, response); ExcelWriterSheetBuilder builder = EasyExcel.write(out) //是否自动关闭流 .autoCloseStream(Boolean.FALSE) @@ -139,7 +141,7 @@ public class ExcelUtil { builder.doWrite(data); } finally { try { - if (out != null){ + if (out != null) { out.flush(); out.close(); } @@ -150,30 +152,31 @@ public class ExcelUtil { } /** - *导出动态列,带合并单元格 - * @param head 表头 - * @param data 表格数据 - * @param mergeRowIndex 从第几行开始合并 + * 导出动态列,带合并单元格 + * + * @param head 表头 + * @param data 表格数据 + * @param mergeRowIndex 从第几行开始合并 * @param mergeColumnIndex 合并字段的下标,如第一到五列new int[]{0,1,2,3,4} * @param filename * @param response * @param sheetName * @param */ - public static void exportExcel(List> head,List data,int mergeRowIndex,int[] mergeColumnIndex, String filename, HttpServletResponse response,String sheetName) { + public static void exportExcel(List> head, List data, int mergeRowIndex, int[] mergeColumnIndex, String filename, HttpServletResponse response, String sheetName) { OutputStream out = null; try { - out = getOutputStream(filename,response); + out = getOutputStream(filename, response); ExcelWriterSheetBuilder builder = EasyExcel.write(out) //是否自动关闭流 .autoCloseStream(Boolean.FALSE) - .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex,mergeColumnIndex)) + .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) .head(head) .sheet(sheetName); builder.doWrite(data); } finally { try { - if (out != null){ + if (out != null) { out.flush(); out.close(); } @@ -196,9 +199,9 @@ public class ExcelUtil { public static void exportTemplate(Map data, List list, String filename, String templatePath, HttpServletResponse response) { OutputStream out = null; try { - out = getOutputStream(filename,response); + out = getOutputStream(filename, response); ClassPathResource templateResource = new ClassPathResource(templatePath); - ExcelWriter excelWriter = EasyExcel.write(out) + ExcelWriter excelWriter = EasyExcel.write(out) .withTemplate(templateResource.getStream()) .excelType(ExcelTypeEnum.XLSX) .build(); @@ -206,12 +209,12 @@ public class ExcelUtil { if (CollUtil.isEmpty(data)) { throw new IllegalArgumentException("数据为空"); } - excelWriter.fill(list,writeSheet); + excelWriter.fill(list, writeSheet); excelWriter.fill(data, writeSheet); excelWriter.finish(); } finally { try { - if (out != null){ + if (out != null) { out.flush(); out.close(); }