From 6788d1985987c4473fb2d3f3344def90985165eb Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期三, 22 九月 2021 08:47:15 +0800
Subject: [PATCH] Excel注解支持自定义数据处理器
---
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 025a1cd..ca14677 100644
--- a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -6,6 +6,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
@@ -332,6 +333,10 @@
else if (StringUtils.isNotEmpty(attr.dictType()))
{
val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
+ }
+ else if (!attr.handler().equals(ExcelHandlerAdapter.class))
+ {
+ val = dataFormatHandlerAdapter(val, attr);
}
else if (ColumnType.IMAGE == attr.cellType() && StringUtils.isNotEmpty(pictures))
{
@@ -729,6 +734,10 @@
{
cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString());
}
+ else if (!attr.handler().equals(ExcelHandlerAdapter.class))
+ {
+ cell.setCellValue(dataFormatHandlerAdapter(value, attr));
+ }
else
{
// 璁剧疆鍒楃被鍨�
@@ -902,6 +911,28 @@
}
/**
+ * 鏁版嵁澶勭悊鍣�
+ *
+ * @param value 鏁版嵁鍊�
+ * @param excel 鏁版嵁娉ㄨВ
+ * @return
+ */
+ public String dataFormatHandlerAdapter(Object value, Excel excel)
+ {
+ try
+ {
+ Object instance = excel.handler().newInstance();
+ Method formatMethod = excel.handler().getMethod("format", new Class[] { Object.class, String[].class });
+ value = formatMethod.invoke(instance, value, excel.args());
+ }
+ catch (Exception e)
+ {
+ log.error("涓嶈兘鏍煎紡鍖栨暟鎹� " + excel.handler(), e.getMessage());
+ }
+ return Convert.toStr(value);
+ }
+
+ /**
* 鍚堣缁熻淇℃伅
*/
private void addStatisticsData(Integer index, String text, Excel entity)
--
Gitblit v1.9.3