From 424b2ea164665854d587b2f6c25350d944663949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E8=BE=9E=E6=9C=AA=E5=AF=92?= <545073804@qq.com> Date: Sun, 31 Aug 2025 13:24:12 +0800 Subject: [PATCH] =?UTF-8?q?update=20Excel=E5=86=99=E5=87=BA=E5=8C=85?= =?UTF-8?q?=E8=A3=85=E5=99=A8=E6=B7=BB=E5=8A=A0=E6=B3=9B=E5=9E=8B=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E9=99=90=E5=AE=9Awrite=E5=85=A5=E5=8F=82=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/excel/utils/ExcelUtil.java | 7 ++-- ...terHelper.java => ExcelWriterWrapper.java} | 32 +++++++------------ .../service/impl/ExportExcelServiceImpl.java | 15 ++++----- 3 files changed, 22 insertions(+), 32 deletions(-) rename ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/{ExcelWriterHelper.java => ExcelWriterWrapper.java} (81%) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java index de6c11b50..74dbccbac 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelUtil.java @@ -212,7 +212,7 @@ public class ExcelUtil { * @param options Excel下拉可选项 * @param consumer 导出助手消费函数 */ - public static void exportExcel(Class headType, OutputStream os, List options, Consumer consumer) { + public static void exportExcel(Class headType, OutputStream os, List options, Consumer> consumer) { try (ExcelWriter writer = FastExcel.write(os, headType) .autoCloseStream(false) // 自动适配 @@ -224,9 +224,8 @@ public class ExcelUtil { // 添加下拉框操作 .registerWriteHandler(new ExcelDownHandler(options)) .build()) { - ExcelWriterHelper helper = ExcelWriterHelper.of(writer); // 执行消费函数 - consumer.accept(helper); + consumer.accept(ExcelWriterWrapper.of(writer)); } catch (Exception e) { throw new RuntimeException(e); } @@ -239,7 +238,7 @@ public class ExcelUtil { * @param os 输出流 * @param consumer 导出助手消费函数 */ - public static void exportExcel(Class headType, OutputStream os, Consumer consumer) { + public static void exportExcel(Class headType, OutputStream os, Consumer> consumer) { exportExcel(headType, os, null, consumer); } diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterHelper.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java similarity index 81% rename from ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterHelper.java rename to ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java index f835986de..396f3713e 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterHelper.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/utils/ExcelWriterWrapper.java @@ -8,41 +8,33 @@ import cn.idev.excel.write.builder.ExcelWriterTableBuilder; import cn.idev.excel.write.metadata.WriteSheet; import cn.idev.excel.write.metadata.WriteTable; import cn.idev.excel.write.metadata.fill.FillConfig; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.RequiredArgsConstructor; import java.util.Collection; import java.util.function.Supplier; /** - * ExcelWriterHelper Excel写出助手 + * ExcelWriterWrapper Excel写出包装器 *
* 提供了一组与 ExcelWriter 一一对应的写出方法,避免直接提供 ExcelWriter 而导致的一些不可控问题(比如提前关闭了IO流等) * - * - * @see ExcelWriter * @author 秋辞未寒 + * @see ExcelWriter */ -@RequiredArgsConstructor -public class ExcelWriterHelper { +public record ExcelWriterWrapper(ExcelWriter excelWriter) { - @Getter(AccessLevel.PRIVATE) - private final ExcelWriter excelWriter; - - public void write(Collection data, WriteSheet writeSheet) { + public void write(Collection data, WriteSheet writeSheet) { excelWriter.write(data, writeSheet); } - public void write(Supplier> supplier, WriteSheet writeSheet) { - excelWriter.write(supplier, writeSheet); + public void write(Supplier> supplier, WriteSheet writeSheet) { + excelWriter.write(supplier.get(), writeSheet); } - public void write(Collection data, WriteSheet writeSheet, WriteTable writeTable) { + public void write(Collection data, WriteSheet writeSheet, WriteTable writeTable) { excelWriter.write(data, writeSheet, writeTable); } - public void write(Supplier> supplier, WriteSheet writeSheet, WriteTable writeTable) { + public void write(Supplier> supplier, WriteSheet writeSheet, WriteTable writeTable) { excelWriter.write(supplier.get(), writeSheet, writeTable); } @@ -67,13 +59,13 @@ public class ExcelWriterHelper { } /** - * 创建一个 ExcelWriterHelper + * 创建一个 ExcelWriterWrapper * * @param excelWriter ExcelWriter - * @return ExcelWriterHelper + * @return ExcelWriterWrapper */ - public static ExcelWriterHelper of(ExcelWriter excelWriter) { - return new ExcelWriterHelper(excelWriter); + public static ExcelWriterWrapper of(ExcelWriter excelWriter) { + return new ExcelWriterWrapper<>(excelWriter); } // -------------------------------- sheet start diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java index 3a3bde171..2813cc287 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java @@ -9,10 +9,9 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.file.FileUtils; -import org.dromara.common.excel.core.CellMergeStrategy; import org.dromara.common.excel.core.DropDownOptions; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.common.excel.utils.ExcelWriterHelper; +import org.dromara.common.excel.utils.ExcelWriterWrapper; import org.dromara.demo.domain.vo.ExportDemoVo; import org.dromara.demo.service.IExportExcelService; import org.springframework.stereotype.Service; @@ -246,7 +245,7 @@ public class ExportExcelServiceImpl implements IExportExcelService { FileUtils.setAttachmentResponseHeader(response, filename); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"); - ExcelUtil.exportExcel(ExportDemoVo.class, response.getOutputStream(), helper -> { + ExcelUtil.exportExcel(ExportDemoVo.class, response.getOutputStream(), wrapper -> { // 创建表格数据,业务中一般通过数据库查询 List excelDataList = new ArrayList<>(); for (int i = 0; i < 30; i++) { @@ -264,13 +263,13 @@ public class ExportExcelServiceImpl implements IExportExcelService { } // 创建表格 - WriteSheet sheet = ExcelWriterHelper.sheetBuilder("自定义导出demo") + WriteSheet sheet = ExcelWriterWrapper.sheetBuilder("自定义导出demo") // 合并单元格 // .registerWriteHandler(new CellMergeStrategy(excelDataList, true)) .build(); - helper.write(excelDataList, sheet); + wrapper.write(excelDataList, sheet); List excelDataList2 = new ArrayList<>(); for (int i = 0; i < 20; i++) { @@ -288,11 +287,11 @@ public class ExportExcelServiceImpl implements IExportExcelService { excelDataList2.add(everyRowData); } - helper.write(excelDataList2, sheet); + wrapper.write(excelDataList2, sheet); // 或者在同一个excel中创建多个表格 - // WriteSheet sheet2 = ExcelWriterHelper.sheetBuilder("自定义导出demo2").build(); - // helper.write(excelDataList2, sheet2); + // WriteSheet sheet2 = ExcelWriterWrapper.sheetBuilder("自定义导出demo2").build(); + // wrapper.write(excelDataList2, sheet2); }); } }