From cdcd2d540de3e6ba4c2e9e7c6a879416da78c17b Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 16 Dec 2021 10:53:51 +0800
Subject: [PATCH] 保安员导出过多导致报错问题处理
---
src/main/java/org/springblade/common/excel/RowWriteHandler.java | 53 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 34 insertions(+), 19 deletions(-)
diff --git a/src/main/java/org/springblade/common/excel/RowWriteHandler.java b/src/main/java/org/springblade/common/excel/RowWriteHandler.java
index ae04aa7..38a7282 100644
--- a/src/main/java/org/springblade/common/excel/RowWriteHandler.java
+++ b/src/main/java/org/springblade/common/excel/RowWriteHandler.java
@@ -6,6 +6,7 @@
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
+import org.springblade.core.tool.utils.Func;
import java.util.List;
@@ -14,31 +15,45 @@
* @author zhongrj
* @since 2021-9-26
*/
-public class RowWriteHandler implements CellWriteHandler {
+public class RowWriteHandler implements CellWriteHandler {
+ public static CellStyle cellStyle;
- @Override
- public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+ /**
+ * 设置全局变量,防止 cellStyle 创建过多报错 2021-12-16 zrj
+ * The maximum number of cell styles was exceeded. You can define up to 64000styles in a .xlsx workbook
+ * @param cellStyle
+ */
+ public static void setCellStyle(CellStyle cellStyle) {
+ RowWriteHandler.cellStyle = cellStyle;
+ }
+ @Override
+ public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+
+ }
+
+ @Override
+ public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+ //设置单元格格式为文本
+ Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
+ //自定义样式不为空时,重复利用
+ if(Func.isEmpty(cellStyle)){
+ cellStyle = workbook.createCellStyle();
+ setCellStyle(cellStyle);
}
+ DataFormat dataFormat = workbook.createDataFormat();
+ cellStyle.setDataFormat(dataFormat.getFormat("@"));
+ cell.setCellStyle(cellStyle);
+ }
- @Override
- public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
- //设置单元格格式为文本
- Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
- CellStyle cellStyle = workbook.createCellStyle();
- DataFormat dataFormat = workbook.createDataFormat();
- cellStyle.setDataFormat(dataFormat.getFormat("@"));
- cell.setCellStyle(cellStyle);
- }
+ //@Override 加上会报错
+ public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
- //@Override 加上会报错
- public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+ }
- }
+ @Override
+ public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
- @Override
- public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
-
- }
+ }
}
--
Gitblit v1.9.3