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

问题描述 投票:2回答:2

我正在尝试使用java apache poi从只读xlsm读取数据,但是当我使用XSSF工作簿时,它似乎无法访问该文件,而HSSF工作簿仅适用于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");

代码永远不会到达“工作簿”打印行,我不知道为什么。请帮忙!

java file-io apache-poi xlsx
2个回答
-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");

这似乎是您的引用问题。因此,在尝试创建文件资源时,请检查引用文件的方式。


2
投票

版本4.0.0有一个工作簿工厂类,带有一个布尔“readonly”参数。所以,以只读模式打开...

XSSFWorkbook nextWorkbook = XSSFWorkbookFactory.createWorkbook(myFile, true);
© www.soinside.com 2019 - 2024. All rights reserved.