From 871bdb1183dff58692f609580ea1935b877cd958 Mon Sep 17 00:00:00 2001 From: aeizzz <1129603149@qq.com> Date: Mon, 28 Nov 2022 14:51:04 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20cl?= =?UTF-8?q?ose=20#4535=20up=20common-excel=20=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/AbstractSheetWriteHandler.java | 12 +++++----- .../excel/handler/ManySheetWriteHandler.java | 16 +++++++++++--- .../handler/SingleSheetWriteHandler.java | 22 +++++++++++++------ 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java index 39f4b9e11..a9eabe448 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java @@ -93,7 +93,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap .orElse("application/vnd.ms-excel"); response.setContentType(contentType); response.setCharacterEncoding("utf-8"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename*=utf-8''" + fileName); write(o, response, responseExcel); } @@ -115,11 +115,11 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap } if (responseExcel.include().length != 0) { - writerBuilder.includeColumnFiledNames(Arrays.asList(responseExcel.include())); + writerBuilder.includeColumnFieldNames(Arrays.asList(responseExcel.include())); } if (responseExcel.exclude().length != 0) { - writerBuilder.excludeColumnFiledNames(Arrays.asList(responseExcel.exclude())); + writerBuilder.includeColumnFieldNames(Arrays.asList(responseExcel.exclude())); } if (responseExcel.writeHandler().length != 0) { @@ -197,10 +197,10 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap else if (dataClass != null) { writerSheetBuilder.head(dataClass); if (sheet.excludes().length > 0) { - writerSheetBuilder.excludeColumnFiledNames(Arrays.asList(sheet.excludes())); + writerSheetBuilder.excludeColumnFieldNames(Arrays.asList(sheet.excludes())); } if (sheet.includes().length > 0) { - writerSheetBuilder.includeColumnFiledNames(Arrays.asList(sheet.includes())); + writerSheetBuilder.excludeColumnFieldNames(Arrays.asList(sheet.includes())); } } @@ -217,7 +217,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap Assert.notNull(headGenerator, "The header generated bean does not exist."); HeadMeta head = headGenerator.head(dataClass); writerSheetBuilder.head(head.getHead()); - writerSheetBuilder.excludeColumnFiledNames(head.getIgnoreHeadFields()); + writerSheetBuilder.excludeColumnFieldNames(head.getIgnoreHeadFields()); } /** diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/ManySheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/ManySheetWriteHandler.java index 3c48585b8..06e95b7c8 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/ManySheetWriteHandler.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/ManySheetWriteHandler.java @@ -1,5 +1,6 @@ package com.pig4cloud.pigx.common.excel.handler; +import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.write.metadata.WriteSheet; @@ -9,6 +10,7 @@ import com.pig4cloud.pigx.common.excel.kit.ExcelException; import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.excel.annotation.Sheet; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -50,9 +52,17 @@ public class ManySheetWriteHandler extends AbstractSheetWriteHandler { WriteSheet sheet; for (int i = 0; i < sheets.length; i++) { List eleList = (List) objList.get(i); - Class dataClass = eleList.get(0).getClass(); - // 创建sheet - sheet = this.sheet(sheets[i], dataClass, responseExcel.template(), responseExcel.headGenerator()); + + if (CollectionUtils.isEmpty(eleList)) { + sheet = EasyExcel.writerSheet(responseExcel.sheets()[i].sheetName()).build(); + } + else { + // 有模板则不指定sheet名 + Class dataClass = eleList.get(0).getClass(); + sheet = this.sheet(responseExcel.sheets()[i], dataClass, responseExcel.template(), + responseExcel.headGenerator()); + } + // 填充 sheet if (responseExcel.fill()) { excelWriter.fill(eleList, sheet); diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java index b55315dee..09976fd66 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/SingleSheetWriteHandler.java @@ -1,5 +1,6 @@ package com.pig4cloud.pigx.common.excel.handler; +import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.write.metadata.WriteSheet; @@ -8,6 +9,7 @@ import com.pig4cloud.pigx.common.excel.enhance.WriterBuilderEnhancer; import com.pig4cloud.pigx.common.excel.kit.ExcelException; import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -44,21 +46,27 @@ public class SingleSheetWriteHandler extends AbstractSheetWriteHandler { @Override public void write(Object obj, HttpServletResponse response, ResponseExcel responseExcel) { - List list = (List) obj; + List eleList = (List) obj; ExcelWriter excelWriter = getExcelWriter(response, responseExcel); - // 有模板则不指定sheet名 - Class dataClass = list.get(0).getClass(); - WriteSheet sheet = this.sheet(responseExcel.sheets()[0], dataClass, responseExcel.template(), - responseExcel.headGenerator()); + WriteSheet sheet; + if (CollectionUtils.isEmpty(eleList)) { + sheet = EasyExcel.writerSheet(responseExcel.sheets()[0].sheetName()).build(); + } + else { + // 有模板则不指定sheet名 + Class dataClass = eleList.get(0).getClass(); + sheet = this.sheet(responseExcel.sheets()[0], dataClass, responseExcel.template(), + responseExcel.headGenerator()); + } // 填充 sheet if (responseExcel.fill()) { - excelWriter.fill(list, sheet); + excelWriter.fill(eleList, sheet); } else { // 写入sheet - excelWriter.write(list, sheet); + excelWriter.write(eleList, sheet); } excelWriter.finish(); }