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

时间:2014-06-19 23:16:09

标签: java file-io apache-poi xlsx

我尝试使用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");

代码永远不会到达工作簿中的""打印线,我不知道为什么。请帮忙!

2 个答案:

答案 0 :(得分:0)

4.0.0版具有一个工作簿工厂类,该工厂类具有布尔“只读”参数。 因此,要以只读模式打开...

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

答案 1 :(得分:-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");

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