使用Java Apache POI读取只读xlsm文件中的数据

5

我正在尝试使用Java Apache POI从只读的xlsm文件中读取数据,但是当我使用XSSF workbook时,它似乎无法访问该文件,而HSSF workbooks仅适用于xls文件。我的代码如下:

try {
                FileInputStream file = new FileInputStream(new File("file.xlsm"));
                System.out.println("found file");
                XSSFWorkbook workbook = new XSSFWorkbook(file);
                System.out.println("in workbook");
                XSSFSheet sheet = workbook.getSheet("Shipments");
                System.out.println("got sheet");

代码从未到达“在工作簿中”这一行并且我不确定为什么。请帮忙!

1
会抛出什么异常? - Gagravarr
1
没有任何反应,程序一直在运行但没有任何操作。 - ajs
1
@ajs 这听起来像是你实际上捕获并吞咽了异常。我对你的 catch 块中有什么感兴趣... - Daniel Baktiar
2个回答

4

版本4.0.0具有一个工作簿工厂类,其中包含一个布尔型的“readonly”参数。因此,要以只读模式打开...

XSSFWorkbook nextWorkbook = XSSFWorkbookFactory.createWorkbook(myFile, true);

-2

我复制了你的代码,并给出了文件的绝对路径,最终得到了预期的结果。

FileInputStream file = new FileInputStream(new File("C:\\Users\\user\\Desktop\\filet.xlsm"));
System.out.println("found file");
XSSFWorkbook workbook = new XSSFWorkbook(file);
System.out.println("in workbook");
XSSFSheet sheet = workbook.getSheet("Shipments");
System.out.println("got sheet");

看起来是您的引用出了问题。因此,在尝试创建文件资源时,请检查您引用文件的方式。


我正在访问的文件是一个网络文件,你认为这会引起问题吗? - ajs
2
我尝试了相同的代码,但是出现了java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException错误。如果您有任何线索,请帮助我解决。 - user1047873
@user1047873 - 你的类路径中是否包含xmlbeans-2.X.X.jar? - NullPumpkinException

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接