Open vesio opened 5 months ago
像是和 #3823 反馈的一样情况导致的问题。 我会尝试跟进并修复该问题。
感谢你的回复 我看了一下源码有 CellInlineStringValueTagHandler 这个类 但是这个类里面什么都没做 复用了父类(AbstractCellValueTagHandler) 的 characters 方法 characters方法里面
@Override
public void characters(XlsxReadContext xlsxReadContext, char[] ch, int start, int length) {
xlsxReadContext.xlsxReadSheetHolder().getTempData().append(ch, start, length);
}
是 getTempData().append(ch, start, length) 我debug看了一下 getTempData() 得到的是 20 (ch, start, length) 是 1 就导致 20 append 1, 最后输出 201的问题
我直接改源码的话又怕有其他的问题出现,所以特地问一下,因为这个问题在 2.2.6的版本,或者再往前的版本就存在了
Hi,我已经提交对应的PR #3861 。你可以参考PR的实现逻辑,或者直接在CellInlineStringValueTagHandler
上重载方法
建议先去看文档
快速开始 、常见问题
触发场景描述
用户给了一个excel文件,用wps打开显示的值是 1 我收到excel文件,用easyexcel解析出来的值是 201 具体是由 inlineStr 这个类型导致的 我看了一下excle里面的sheet1.xml easyexcel的代码是把20 和 1
的两个值拼接到一起了
触发Bug的代码, 控制台输出的最后一段数据是 12:"201", 说明easyexcel 取到的数据是 201
我用poi的 XSSFWorkbook 读取这个文件读取到的是, 最后的输出是 1
提示的异常或者没有达到的效果
上面的代码都是用 easyexcel 4.0.1执行的
我试过用 easyexcel 2.2.6也会有这样的问题 这样的问题会导致用户那边看到的数据和我取到的数据不一致,用户会很困惑 用户那边的excel也不知道是什么软件生成的
我查了一下通义千问 说是这个文件是错误的xml结构,但是wps确实是可以解析,poi也能解析
出问题的文件也附带了 bug.xlsx