java中poi读取excel时报错:Unable to construct record instance,怎么解决呀?

public static void main(String[] args) throws IOException, InvalidFormatException { Workbook workbook; InputStream is = new FileInputStream(new File("e:\\file\\abc.xls")); //根据输入流创建Workbook对象 Workbook wb = WorkbookFactory.create(is); Sheet sheet = wb.getSheetAt(0); }

根据你的截图,错误的可能有两个,要分别测试对应一下:
1、excel文档有问题,从截图下方看(就是乱码部分)可能excel文档的第1个sheet是个被删除的sheet,所以名称是很长的乱码,导致无法读取。
修改方法:创建一个新的excel文档,然后将需要的内容以文本的形式复制进去,再调用。
2、poi的问题,这个有可能是poi和excel的版本不对应。
修改方法:下载poi的时候确定清楚里面的hkec访问版本对应的是不是你的excel文件的版本。追问

这里有个很奇怪的问题就是:我把这个文件打开什么都不改,Ctrl+s一下再去读取就正常了。重现不出这个错误了😓

追答

那就是第一个原因,临时表

你是get(0)取得的表而不是通过name,所以第一个表如果是删除后的表就出了这个问题,你保存一下那个表就不存在了

追问

那这种情况应该咋样用代码去解决掉,模板肯定动不了,大佬给个思路呗。我实在是无力了

追答

直接用name获取啊Sheet sheet = wb.getSheet("xxx"),我忘了xxx后面要不要加$了,如果返回null就getSheet("xxx$")试试

改成wb.getSheet("sheet名")

追问

在Workbook wb = WorkbookFactory.create(is);这一行就报错了,还没到下面呢

温馨提示:答案为网友推荐,仅供参考