关于原版poi中的一个bug及解决方案

当使用Apache POI进行Excel导出后导入时,如果表格列数为偶数,会出现“上级名称”列读取为空并报错。问题源于poi的Sheet类中DimensionRecord的条件判断错误。Apache官方已确认此bug,并提供了修复方案。目前因 poi 最新版未包含修复,建议下载源码自行修改并生成新的jar文件以解决问题。
摘要由CSDN通过智能技术生成

问题呈现:
        用户在“开发工具—通用码表分类”中进入任意明细,点击“Excel导出”,之后清空明细表,将导出的文件进行“Excel导入”操作时(这种情况在现实使用中并非不会发生,如用户将之前导出的文件作为备份重新导入到系统中),如果导入的码表中存在上级,那么导入的内容会有错误(“上级名称”列读取不到,默认为空),并且后台会报出类似下面的警告:


问题解析:
        现已查明该问题是由于导出的Excel文件存在问题导致的,而导出的文件存在问题根本上是由于apache的poi.jar存在bug造成的,具体原因如下:
        在通过poi进行Excel导出操作时,poi在将内容写入单元格的过程中,会将表格的维度(Dimension,即表格的区域,如7×19)信息通过org.apache.poi.hssf.record包中的DimensionRecord类时时写入到Excel文件的二进制信息中,以便该文件在被读取时使用。但是在poi中真正调用DimensionRecord类的地方是org.apache.poi.hssf.model.Sheet类中的addValueRecord方法,在该方法中存在一个条件判断错误(第956行ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值