update ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java.
解决Boolean类型属性在解析单元格数据后, 会先被此 val = Convert.toBool(val, false) 解析为 Boolean 类型, 之后 val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator()) 此方法在进行反向解析值时, 无法匹配到返回为"", 导致 Boolean 值丢失.
如:
属性
@Excel(name = "是否打开", readConverterExp = "true=yes,false=no")
private Boolean isOpen;
首先会执行 val = Convert.toBool(val, false); 此方法返回 Boolean 类型.
public static Boolean toBool(Object value, Boolean defaultValue)
{
if (value == null)
{
return defaultValue;
}
if (value instanceof Boolean)
{
return (Boolean) value;
}
String valueStr = toStr(value, null);
if (StringUtils.isEmpty(valueStr))
{
return defaultValue;
}
valueStr = valueStr.trim().toLowerCase();
switch (valueStr)
{
case "true":
case "是":
case "yes":
case "ok":
case "1":
return true;
case "否":
case "false":
case "no":
case "0":
return false;
default:
return defaultValue;
}
}
Signed-off-by: 程子 <395030787@qq.com>
pull/988/head
parent
193c256e71
commit
3d0f0c9aae
|
|
@ -1332,7 +1332,7 @@ public class ExcelUtil<T>
|
|||
{
|
||||
for (String value : propertyValue.split(separator))
|
||||
{
|
||||
if (itemArray[1].equals(value))
|
||||
if (itemArray[1].equals(value) || itemArray[0].equals(value))
|
||||
{
|
||||
propertyString.append(itemArray[0] + separator);
|
||||
break;
|
||||
|
|
@ -1341,7 +1341,7 @@ public class ExcelUtil<T>
|
|||
}
|
||||
else
|
||||
{
|
||||
if (itemArray[1].equals(propertyValue))
|
||||
if (itemArray[1].equals(propertyValue) || itemArray[0].equals(propertyValue))
|
||||
{
|
||||
return itemArray[0];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue