diff --git a/lis-interfaceCommon/pom.xml b/lis-interfaceCommon/pom.xml
index 5852b9c..95e4f4e 100644
--- a/lis-interfaceCommon/pom.xml
+++ b/lis-interfaceCommon/pom.xml
@@ -73,6 +73,7 @@
com.alibaba
easyexcel
+
org.springframework.boot
spring-boot-starter-websocket
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/EasyExcelExportUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/EasyExcelExportUtil.java
index 5feb938..e3fbc0c 100644
--- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/EasyExcelExportUtil.java
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/EasyExcelExportUtil.java
@@ -1,43 +1,53 @@
package com.czlis.interfaceCommon.utils;
-
import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.builder.ExcelWriterBuilder;
+import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
-import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.math.BigDecimal;
import java.net.URLEncoder;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.*;
public class EasyExcelExportUtil {
- /** 列配置:字段key -> 列配置 */
+ private static final DateTimeFormatter DATE_FORMAT =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
+
+ /** 列配置 */
public static class ColumnConfig {
private String name; // 表头列名
- private Integer width; // 前端列宽(px),null 或 0 不设置
+ private Integer width; // 前端列宽(px)
+ private Boolean sum; // true = 该列需要合计(生成合计行时求和)
public ColumnConfig() {}
public ColumnConfig(String name) { this.name = name; }
public ColumnConfig(String name, Integer width) { this.name = name; this.width = width; }
+ public ColumnConfig(String name, Integer width, Boolean sum) {
+ this.name = name; this.width = width; this.sum = sum;
+ }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getWidth() { return width; }
public void setWidth(Integer width) { this.width = width; }
+ public Boolean getSum() { return sum; }
+ public void setSum(Boolean sum) { this.sum = sum; }
}
- /** 手动列宽 Handler(3.3.4 无 setColumnWidthMap,用此方案) */
+ /** 手动列宽 Handler */
public static class ColumnWidthHandler implements SheetWriteHandler {
private final Map columnWidthMap;
-
public ColumnWidthHandler(Map columnWidthMap) {
this.columnWidthMap = columnWidthMap == null ? Collections.emptyMap() : columnWidthMap;
}
-
@Override
- public void beforeSheetCreate(WriteWorkbookHolder w, WriteSheetHolder s) {
- }
-
+ public void beforeSheetCreate(WriteWorkbookHolder w, WriteSheetHolder s) {}
@Override
public void afterSheetCreate(WriteWorkbookHolder w, WriteSheetHolder s) {
Sheet sheet = s.getSheet();
@@ -47,21 +57,49 @@ public class EasyExcelExportUtil {
}
}
+ /** 合计行蓝色字体 Handler */
+ public static class SummaryRowStyleHandler implements RowWriteHandler {
+ private final int summaryRowIndex;
+ public SummaryRowStyleHandler(int summaryRowIndex) {
+ this.summaryRowIndex = summaryRowIndex;
+ }
+ @Override
+ public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
+ Row row, Integer relativeRowIndex, Boolean isHead) {
+ if (Boolean.TRUE.equals(isHead)) {
+ return;
+ }
+ if (row.getRowNum() != summaryRowIndex) {
+ return;
+ }
+ Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
+ Font font = workbook.createFont();
+ font.setColor(IndexedColors.BLUE.getIndex()); // 蓝色
+ font.setBold(true); // 加粗(可选)
+ CellStyle style = workbook.createCellStyle();
+ style.setFont(font);
+ for (int i = 0; i < row.getLastCellNum(); i++) {
+ Cell cell = row.getCell(i);
+ if (cell == null) {
+ cell = row.createCell(i);
+ }
+ cell.setCellStyle(style);
+ }
+ }
+ }
+
/**
- * 导出 List