From da6e29e14c324c147aee81bf473e635f356cc0f4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?=
<2847127106@qq.com>
Date: Sat, 10 Aug 2024 10:21:39 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Excel=E5=B7=A5=E5=85=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../muyu/common/core/annotation/Excel.java | 10 +
.../common/core/utils/poi/ExcelUtils.java | 810 ++++++++++++++++++
3 files changed, 821 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/com/muyu/common/core/utils/poi/ExcelUtils.java
diff --git a/pom.xml b/pom.xml
index c316181..12c112c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -172,7 +172,7 @@
com.dtflys.forest
- forest-spring-boot-starter
+ forest-spring-boot3-starter
1.5.36
diff --git a/src/main/java/com/muyu/common/core/annotation/Excel.java b/src/main/java/com/muyu/common/core/annotation/Excel.java
index 36180e5..eb7928a 100644
--- a/src/main/java/com/muyu/common/core/annotation/Excel.java
+++ b/src/main/java/com/muyu/common/core/annotation/Excel.java
@@ -148,6 +148,16 @@ public @interface Excel {
*/
Type type () default Type.ALL;
+ /**
+ * 可执行的反射方法值为1个
+ */
+ public String invokeMethod() default "";
+
+ /**
+ * 可执行的反射类 从SpringIoc容器当中取值
+ */
+ public Class> invokeClass() default String.class;
+
public enum Type {
ALL(0), EXPORT(1), IMPORT(2);
private final int value;
diff --git a/src/main/java/com/muyu/common/core/utils/poi/ExcelUtils.java b/src/main/java/com/muyu/common/core/utils/poi/ExcelUtils.java
new file mode 100644
index 0000000..41ce85a
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/utils/poi/ExcelUtils.java
@@ -0,0 +1,810 @@
+package com.muyu.common.core.utils.poi;
+
+
+
+import com.muyu.common.core.annotation.Excel;
+import com.muyu.common.core.annotation.Excel.ColumnType;
+import com.muyu.common.core.annotation.Excel.Type;
+import com.muyu.common.core.annotation.Excels;
+import com.muyu.common.core.exception.UtilException;
+import com.muyu.common.core.text.Convert;
+import com.muyu.common.core.utils.DateUtils;
+import com.muyu.common.core.utils.SpringUtils;
+import com.muyu.common.core.utils.StringUtils;
+import com.muyu.common.core.utils.file.FileTypeUtils;
+import com.muyu.common.core.utils.file.ImageUtils;
+import com.muyu.common.core.utils.reflect.ReflectUtils;
+import lombok.extern.log4j.Log4j2;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.RegExUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellRangeAddressList;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFDataValidation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Excel相关处理
+ */
+@Log4j2
+public class ExcelUtils
+{
+
+ /**
+ * Excel sheet最大行数,默认65536
+ */
+ public static final int SHEET_SIZE = 65536;
+
+ /**
+ * 工作表名称
+ */
+ private String sheetName;
+
+ /**
+ * 导出类型(EXPORT:导出数据;IMPORT:导入模板)
+ */
+ private Type type;
+
+ /**
+ * 工作薄对象
+ */
+ private Workbook wb;
+
+ /**
+ * 工作表对象
+ */
+ private Sheet sheet;
+
+ /**
+ * 样式列表
+ */
+ private Map styles;
+
+ /**
+ * 导入导出数据列表
+ */
+ private List list;
+
+ /**
+ * 注解列表
+ */
+ private List