From 19015c7ef591fad49dba2755113b739ca074dfa8 Mon Sep 17 00:00:00 2001 From: chenjg <17688741996@163.com> Date: Fri, 9 Aug 2024 18:51:01 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=A2=9E=E5=8A=A0excel?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=97=B6=E5=AF=B9sheet=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E7=9A=84=E5=88=A4=E6=96=AD=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/util/excel/ExcelBuilder.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/neatlogic/framework/util/excel/ExcelBuilder.java b/src/main/java/neatlogic/framework/util/excel/ExcelBuilder.java index 64d94cfd2..2760dcde5 100644 --- a/src/main/java/neatlogic/framework/util/excel/ExcelBuilder.java +++ b/src/main/java/neatlogic/framework/util/excel/ExcelBuilder.java @@ -27,6 +27,7 @@ import org.apache.poi.ss.util.CellRangeAddressList; import java.util.*; public class ExcelBuilder { + private static final String SHEET_ILLEGAL_SYMBOL_REGEX = "(\\*|/|:|\\\\|\\[|\\]|\\?|:|?)"; private final Class workbookClass; private Workbook workbook; //private Sheet sheet; @@ -199,7 +200,7 @@ public class ExcelBuilder { if (this.workbook == null) { try { this.workbook = (Workbook) (Class.forName(workbookClass.getName()).newInstance()); - } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + } catch (Exception e) { throw new UnableToCreateWorkbookException(workbookClass.getSimpleName(), e.getMessage()); } } @@ -211,8 +212,27 @@ public class ExcelBuilder { if (CollectionUtils.isNotEmpty(this.sheetBuilderList)) { for (SheetBuilder sheetBuilder : this.sheetBuilderList) { Sheet sheet = null; - if (StringUtils.isNotBlank(sheetBuilder.getSheetName())) { - sheet = this.workbook.createSheet(sheetBuilder.getSheetName()); + String sheetName = sheetBuilder.getSheetName(); + if (sheetName != null) { + // sheet名称去掉不合法字符 + sheetName = sheetName.replaceAll(SHEET_ILLEGAL_SYMBOL_REGEX, ""); + } + if (sheetName != null && sheetName.length() > 31) { + // sheet名称不能超过31个字符 + sheetName = sheetName.substring(0, 31); + } + if (StringUtils.isNotBlank(sheetName)) { + // 判断是否存在同名sheet + if (this.workbook.getSheet(sheetName) != null) { + sheetName = sheetName.substring(0, Math.min(sheetName.length(), 28)); + for (int i = 2; i < 10; i++) { + sheetName = sheetName + "(" + i + ")"; + if (this.workbook.getSheet(sheetName) == null) { + break; + } + } + } + sheet = this.workbook.createSheet(sheetName); } else { sheet = this.workbook.createSheet(); } -- Gitee