gpt4 book ai didi

java - 打开 xls 文件时出现异常

转载 作者:行者123 更新时间:2023-11-29 05:05:36 25 4
gpt4 key购买 nike

我有一个可以在 excel 中打开的 xls 文件,但是当我尝试使用 Apache POI 打开它时,出现了这个异常:

java.io.IOException: block[ 3 ] already removed - does your POIFS have circular or duplicate block references?
at org.apache.poi.poifs.storage.BlockListImpl.remove(BlockListImpl.java:89)
at org.apache.poi.poifs.storage.RawDataBlockList.remove(RawDataBlockList.java:34)
at org.apache.poi.poifs.storage.BlockAllocationTableReader.fetchBlocks(BlockAllocationTableReader.java:221)
at org.apache.poi.poifs.storage.BlockListImpl.fetchBlocks(BlockListImpl.java:123)
at org.apache.poi.poifs.storage.RawDataBlockList.fetchBlocks(RawDataBlockList.java:34)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:528)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:327)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:308)
at controlers.ExcelProject2.setBook(ExcelProject2.java:327)
at controlers.ExcelProject2.<init>(ExcelProject2.java:149)
at controlers.ExcelProject2Tests.main(ExcelProject2Tests.java:41)

问题出现在我的这部分代码:

FileInputStream fs = new FileInputStream(pathFiles);
Workbook book = new HSSFWorkbook(fs);

如果我在 excel 中打开文件,“另存为”,然后用 Java 打开新文件,就可以了。即使我打开文件并保存,不做任何更改,它也能正常工作。不知道为什么,新文件比旧文件大。

我曾尝试使用我在谷歌上找到的不同解决方案,例如使用 BOMInputStream 或 NPOI 文件,但它没有用。我目前正在使用 poi-3.8-20120326。

我无法共享该文件,因为它包含私有(private)信息,但除了数字和字符串之外别无其他。

我将随时为您提供更多信息。

问候。

编辑:我不知道这是否有所不同,但我忘了说该文件处于兼容模式

最佳答案

我可以看到您有两个问题。首先,您使用的是较旧的 POIFS 实现,已知该实现在某些 block 组合上存在一些问题,其次您使用的是 an InputStream when you have a File具有更高的内存占用量

获取代码

FileInputStream fs = new FileInputStream(pathFiles);
Workbook book = new HSSFWorkbook(fs);

在 POI 3.12 或更高版本上,简单的解决方法是将其替换为:

Workbook book = WorkbookFactory.create(new File(pathFiles));

这将使用一个文件而不是一个流,并且将使用 NPOIFS,这是一种重写,可以解决您遇到的问题

关于java - 打开 xls 文件时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com