[alibaba/easyexcel]希望能加一个自定义format函数的功能.

2024-04-26 463 views
9

比如我查出来的dto,里面有个一bool字段,我希望在excel中显示"有效","无效". 现在好像只能先定义一个额外string字段,然后转化出结果并赋值给string字段,属性也要打在这个string字段上. 第一污染了dto,第二琐碎,第三不直观. 希望有个类似于unix管道操作,或者前端filter概念的方式去输出. 比如可以让使用者在bool(int,枚举)字段上自定义一个lambda表达式

(v)->v?"有效":"无效"

回答

7

或者让ExcelProperty注解target可以支持method,这样我也能在get方法上写这个逻辑. 但是现在都是先转map BeanMap beanMap = BeanMap.create(oneRowData); 也有点不好操作.

我觉得问题的根源还是TypeUtil这个类写的有点死,是否可以像jackson那样用工厂模式装一下,让使用者可以自己决定要不要去定制自己的输出逻辑.

5

同希望添加这特性,TypeUtil有点太死

1

简直坑爹,想要扩展TypeUtil都不行,只能改源码。。。

5

哈哈 这个已经和作者沟通过了,估计一两个月能出来,包括自定义类型转换。到时自定义一个转换器 放进去就行

5

没有自定义类型转换就算啦。他那个TypeUtil里还写写错了: if (Double.class.equals(field.getType()) || double.class.equals(field.getType())) { if (null != format && !"".equals(format)) { int n = getCountOfChar(value, '0'); return Double.parseDouble(TypeUtil.formatFloat0(value, n)); } else { return Double.parseDouble(TypeUtil.formatFloat(value)); } } 四舍五入的时候,根本没有取format属性规定的小数位。int n = getCountOfChar(value, '0'); value有几个“0”跟四舍五入有啥关系!

7

希望这个功能早点出来,要不然太繁琐