From daea7f5c66346b74e9c1ae6b56e01540aee01e60 Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期四, 29 六月 2023 09:32:24 +0800
Subject: [PATCH] poi、easyexcel、poi-tl升级 ,合并空调中的报表、数据源模块

---
 src/main/java/com/product/module/data/utli/Custemhandler.java              |  101 +++++++++++++++++++++++++-------------------------
 src/main/java/com/product/module/data/service/SystemDataExportService.java |    5 ++
 2 files changed, 56 insertions(+), 50 deletions(-)

diff --git a/src/main/java/com/product/module/data/service/SystemDataExportService.java b/src/main/java/com/product/module/data/service/SystemDataExportService.java
index f35abaa..b1de6a9 100644
--- a/src/main/java/com/product/module/data/service/SystemDataExportService.java
+++ b/src/main/java/com/product/module/data/service/SystemDataExportService.java
@@ -26,6 +26,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -291,6 +292,10 @@
 
 		response.setContentType("multipart/form-data");
 		response.setCharacterEncoding("utf-8");
+		//鍏佽璁块棶header涓殑鑷畾涔夊弬鏁�
+		response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+		//璁剧疆鏂囦欢鍚�
+		response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(sheetName + System.currentTimeMillis() + ".xlsx", "UTF-8"));
 		// 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
 		// 杩欓噷闇�瑕佽缃笉鍏抽棴娴�
 		try (ServletOutputStream outputStream = response.getOutputStream();) {
diff --git a/src/main/java/com/product/module/data/utli/Custemhandler.java b/src/main/java/com/product/module/data/utli/Custemhandler.java
index ca59987..d7fd02b 100644
--- a/src/main/java/com/product/module/data/utli/Custemhandler.java
+++ b/src/main/java/com/product/module/data/utli/Custemhandler.java
@@ -1,11 +1,12 @@
 package com.product.module.data.utli;
 
 import com.alibaba.excel.enums.CellDataTypeEnum;
-import com.alibaba.excel.metadata.CellData;
 import com.alibaba.excel.metadata.Head;
-import com.alibaba.excel.util.CollectionUtils;
+import com.alibaba.excel.metadata.data.CellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
 import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
 import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 
 import java.util.HashMap;
@@ -13,54 +14,54 @@
 import java.util.Map;
 
 public class Custemhandler extends AbstractColumnWidthStyleStrategy {
-    private static final int MAX_COLUMN_WIDTH = 255;
+	private static final int MAX_COLUMN_WIDTH = 255;
 
-    private Map<Integer, Map<Integer, Integer>> cache = new HashMap<Integer, Map<Integer, Integer>>(8);
+	private Map<Integer, Map<Integer, Integer>> cache = new HashMap<Integer, Map<Integer, Integer>>(8);
 
-    @Override
-    protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head,
-                                  Integer relativeRowIndex, Boolean isHead) {
-        boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
-        if (!needSetWidth) {
-            return;
-        }
-        Map<Integer, Integer> maxColumnWidthMap = cache.get(writeSheetHolder.getSheetNo());
-        if (maxColumnWidthMap == null) {
-            maxColumnWidthMap = new HashMap<Integer, Integer>(16);
-            cache.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);
-        }
-        Integer columnWidth = dataLength(cellDataList, cell, isHead);
-        if (columnWidth < 0) {
-            return;
-        }
-        if (columnWidth > MAX_COLUMN_WIDTH) {
-            columnWidth = MAX_COLUMN_WIDTH;
-        }
-        Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());
-        if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
-            maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);
-            writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 256);
-        }
-    }
+	@Override
+	protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head,
+								  Integer relativeRowIndex, Boolean isHead) {
+		boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
+		if (!needSetWidth) {
+			return;
+		}
+		Map<Integer, Integer> maxColumnWidthMap = cache.get(writeSheetHolder.getSheetNo());
+		if (maxColumnWidthMap == null) {
+			maxColumnWidthMap = new HashMap<Integer, Integer>(16);
+			cache.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);
+		}
+		Integer columnWidth = dataLength(cellDataList, cell, isHead);
+		if (columnWidth < 0) {
+			return;
+		}
+		if (columnWidth > MAX_COLUMN_WIDTH) {
+			columnWidth = MAX_COLUMN_WIDTH;
+		}
+		Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());
+		if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
+			maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);
+			writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 256);
+		}
+	}
 
-    private Integer dataLength(List<CellData> cellDataList, Cell cell, Boolean isHead) {
-        if (isHead) {
-            return cell.getStringCellValue().getBytes().length;
-        }
-        CellData cellData = cellDataList.get(0);
-        CellDataTypeEnum type = cellData.getType();
-        if (type == null) {
-            return -1;
-        }
-        switch (type) {
-            case STRING:
-                return cellData.getStringValue().getBytes().length;
-            case BOOLEAN:
-                return cellData.getBooleanValue().toString().getBytes().length;
-            case NUMBER:
-                return cellData.getNumberValue().toString().getBytes().length;
-            default:
-                return -1;
-        }
-    }
-}
\ No newline at end of file
+	private Integer dataLength(List<WriteCellData<?>> cellDataList, Cell cell, Boolean isHead) {
+		if (isHead) {
+			return cell.getStringCellValue().getBytes().length;
+		}
+		CellData cellData = cellDataList.get(0);
+		CellDataTypeEnum type = cellData.getType();
+		if (type == null) {
+			return -1;
+		}
+		switch (type) {
+			case STRING:
+				return cellData.getStringValue().getBytes().length;
+			case BOOLEAN:
+				return cellData.getBooleanValue().toString().getBytes().length;
+			case NUMBER:
+				return cellData.getNumberValue().toString().getBytes().length;
+			default:
+				return -1;
+		}
+	}
+}

--
Gitblit v1.9.2