使用Apache POI读取XLSB文件时遇getLocale()方法未定义报错
解决Apache POI 3.17读取XLSB时的
getLocale()未定义错误 嘿,我来帮你搞定这个问题!你遇到的这个报错,其实是因为Apache POI 3.17版本里的XSSFBEventBasedExcelReader类压根就没有getLocale()方法——那位用户Gagravarr分享的代码,大概率是基于更高版本的POI写的,所以在3.17上跑不通。
给你几个可行的解决思路:
直接替换
getLocale()调用:如果你的代码里只是需要一个默认的区域设置,直接用Locale.getDefault()替代原代码里的reader.getLocale()就行。比如原代码如果是这样:DataFormatter formatter = new DataFormatter(reader.getLocale());改成:
DataFormatter formatter = new DataFormatter(Locale.getDefault());这样就能绕过这个方法缺失的问题。
检查依赖完整性:确保你引入的是
poi-ooxml-full包,而不是精简版的poi-ooxml。3.17版本里,XLSB的二进制格式处理需要完整的OOXML组件支持,缺失的话也可能引发各种奇怪的方法找不到问题。考虑升级POI版本:3.17是比较老的版本了(2017年发布的),后续的POI版本(比如4.1.2、5.2.3)对XLSB的支持更完善,也修复了不少API兼容性问题。如果项目允许的话,升级到稳定的高版本能从根源上避免这类问题。
另外,再提醒一下:处理XLSB文件时,一定要确保你的输入流是正确的二进制流,别当成普通文本流来读,不然也可能触发其他奇怪的异常哦。
内容的提问来源于stack exchange,提问作者vmk
相关产品推荐
相关产品推荐

