From c3bb4d2a6181e27b58cca56def0f392d6df7d7a1 Mon Sep 17 00:00:00 2001
From: zhujie <693337446@qq.com>
Date: 星期五, 26 十一月 2021 13:01:00 +0800
Subject: [PATCH] add 新增导入支持开启Validator数据验证,支持开启导入异常行继续读取,支持返回导入回执

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java |   52 ++++++++++++++++++++--------------------------------
 1 files changed, 20 insertions(+), 32 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index f242d8c..8802a54 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -3,22 +3,21 @@
 import cn.hutool.core.util.IdUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
-import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.common.convert.ExcelBigNumberConvert;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
+import org.apache.poi.ss.formula.functions.T;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 /**
  * Excel鐩稿叧澶勭悊
  *
- * @author ruoyi
+ * @author Lion Li
  */
 public class ExcelUtil {
 
@@ -29,8 +28,21 @@
 	 * @return 杞崲鍚庨泦鍚�
 	 */
 	public static <T> List<T> importExcel(InputStream is, Class<T> clazz) {
-		return EasyExcel.read(is).autoCloseStream(false).sheet().doReadSync();
+		return EasyExcel.read(is).head(clazz).autoCloseStream(false).sheet().doReadSync();
 	}
+
+
+    /**
+     * 瀵筫xcel琛ㄥ崟榛樿绗竴涓储寮曞悕杞崲鎴恖ist锛圗asyExcel锛�
+     *
+     * @param is 杈撳叆娴�
+     * @return 杞崲鍚庨泦鍚�
+     */
+    public static <T> ExcelResult<T> importExcel(InputStream is, Class<T> clazz, boolean isValidate, boolean skipException) {
+        ExcelListener<T> listener = new ExcelListener<>(isValidate, skipException);
+        EasyExcel.read(is, clazz, listener).sheet().doRead();
+        return listener.getExcelResult();
+    }
 
 	/**
 	 * 瀵筶ist鏁版嵁婧愬皢鍏堕噷闈㈢殑鏁版嵁瀵煎叆鍒癳xcel琛ㄥ崟锛圗asyExcel锛�
@@ -43,15 +55,15 @@
 		try {
 			String filename = encodingFilename(sheetName);
 			response.reset();
-			response.addHeader("Access-Control-Allow-Origin", "*");
-			response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
-			FileUtils.setAttachmentResponseHeader(response, URLEncoder.encode(filename, StandardCharsets.UTF_8.toString()));
+			FileUtils.setAttachmentResponseHeader(response, filename);
 			response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
 			ServletOutputStream os = response.getOutputStream();
 			EasyExcel.write(os, clazz)
 				.autoCloseStream(false)
 				// 鑷姩閫傞厤
 				.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+				// 澶ф暟鍊艰嚜鍔ㄨ浆鎹� 闃叉澶辩湡
+				.registerConverter(new ExcelBigNumberConvert())
 				.sheet(sheetName).doWrite(list);
 		} catch (IOException e) {
 			throw new RuntimeException("瀵煎嚭Excel寮傚父");
@@ -114,30 +126,6 @@
 			}
 		}
 		return StringUtils.stripEnd(propertyString.toString(), separator);
-	}
-
-	/**
-	 * 瑙f瀽瀛楀吀鍊�
-	 *
-	 * @param dictValue 瀛楀吀鍊�
-	 * @param dictType  瀛楀吀绫诲瀷
-	 * @param separator 鍒嗛殧绗�
-	 * @return 瀛楀吀鏍囩
-	 */
-	public static String convertDictByExp(String dictValue, String dictType, String separator) {
-		return DictUtils.getDictLabel(dictType, dictValue, separator);
-	}
-
-	/**
-	 * 鍙嶅悜瑙f瀽鍊煎瓧鍏稿��
-	 *
-	 * @param dictLabel 瀛楀吀鏍囩
-	 * @param dictType  瀛楀吀绫诲瀷
-	 * @param separator 鍒嗛殧绗�
-	 * @return 瀛楀吀鍊�
-	 */
-	public static String reverseDictByExp(String dictLabel, String dictType, String separator) {
-		return DictUtils.getDictValue(dictType, dictLabel, separator);
 	}
 
 	/**

--
Gitblit v1.9.3