From 92c630128545884479adbc060b1f0b79bc66d1d2 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Thu, 23 Jul 2020 18:58:45 +0800
Subject: [PATCH] Excel支持分割字符串组内容
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 101 ++++++++++++++++++++++++++++++++++++++------------
1 files changed, 77 insertions(+), 24 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 f4947e0..2d6ed8c 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
@@ -50,6 +50,7 @@
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.CustomException;
import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.reflect.ReflectUtils;
@@ -270,7 +271,11 @@
}
else if (StringUtils.isNotEmpty(attr.readConverterExp()))
{
- val = reverseByExp(String.valueOf(val), attr.readConverterExp());
+ val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
+ }
+ else if (StringUtils.isNotEmpty(attr.dictType()))
+ {
+ val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
}
ReflectUtils.invokeSetter(entity, propertyName, val);
}
@@ -529,13 +534,19 @@
Object value = getTargetValue(vo, field, attr);
String dateFormat = attr.dateFormat();
String readConverterExp = attr.readConverterExp();
+ String separator = attr.separator();
+ String dictType = attr.dictType();
if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value))
{
cell.setCellValue(DateUtils.parseDateToStr(dateFormat, (Date) value));
}
else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value))
{
- cell.setCellValue(convertByExp(String.valueOf(value), readConverterExp));
+ cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
+ }
+ else if (StringUtils.isNotEmpty(dictType))
+ {
+ cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator));
}
else
{
@@ -613,28 +624,36 @@
*
* @param propertyValue 参数值
* @param converterExp 翻译注解
+ * @param separator 分隔符
* @return 解析后值
- * @throws Exception
*/
- public static String convertByExp(String propertyValue, String converterExp) throws Exception
+ public static String convertByExp(String propertyValue, String converterExp, String separator)
{
- try
+ StringBuilder propertyString = new StringBuilder();
+ String[] convertSource = converterExp.split(",");
+ for (String item : convertSource)
{
- String[] convertSource = converterExp.split(",");
- for (String item : convertSource)
+ String[] itemArray = item.split("=");
+ if (StringUtils.containsAny(separator, propertyValue))
{
- String[] itemArray = item.split("=");
+ for (String value : propertyValue.split(separator))
+ {
+ if (itemArray[0].equals(value))
+ {
+ propertyString.append(itemArray[1] + separator);
+ break;
+ }
+ }
+ }
+ else
+ {
if (itemArray[0].equals(propertyValue))
{
return itemArray[1];
}
}
}
- catch (Exception e)
- {
- throw e;
- }
- return propertyValue;
+ return StringUtils.stripEnd(propertyString.toString(), separator);
}
/**
@@ -642,28 +661,62 @@
*
* @param propertyValue 参数值
* @param converterExp 翻译注解
+ * @param separator 分隔符
* @return 解析后值
- * @throws Exception
*/
- public static String reverseByExp(String propertyValue, String converterExp) throws Exception
+ public static String reverseByExp(String propertyValue, String converterExp, String separator)
{
- try
+ StringBuilder propertyString = new StringBuilder();
+ String[] convertSource = converterExp.split(",");
+ for (String item : convertSource)
{
- String[] convertSource = converterExp.split(",");
- for (String item : convertSource)
+ String[] itemArray = item.split("=");
+ if (StringUtils.containsAny(separator, propertyValue))
{
- String[] itemArray = item.split("=");
+ for (String value : propertyValue.split(separator))
+ {
+ if (itemArray[1].equals(value))
+ {
+ propertyString.append(itemArray[0] + separator);
+ break;
+ }
+ }
+ }
+ else
+ {
if (itemArray[1].equals(propertyValue))
{
return itemArray[0];
}
}
}
- catch (Exception e)
- {
- throw e;
- }
- return propertyValue;
+ return StringUtils.stripEnd(propertyString.toString(), separator);
+ }
+
+ /**
+ * 解析字典值
+ *
+ * @param dictValue 字典值
+ * @param dictType 字典类型
+ * @param separator 分隔符
+ * @return 字典标签
+ */
+ public static String convertDictByExp(String dictValue, String dictType, String separator)
+ {
+ return DictUtils.getDictLabel(dictType, dictValue, separator);
+ }
+
+ /**
+ * 反向解析值字典值
+ *
+ * @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.2