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
程子 2025-03-03 07:58:31 +00:00 committed by Gitee
parent 193c256e71
commit 3d0f0c9aae
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 2 additions and 2 deletions

View File

@ -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];
}