我尝试使用 Java 中的 Apache POI 使用扩展名为 .xlsm 的 Excel 文件初始化 XSSFWorkbook,但加载文件需要很长时间(我已经等了 1 小时,它仍在加载)。xlsm 文件本身相当小(1MB),有 50 张纸(每张纸有一个由 5x20 单元格组成的表格)和一个宏脚本。我目前使用的代码是:
String templateFilePath = filePath + fileName + ".xlsm";
XSSFWorkbook newWorkBook = new XSSFWorkbook(templateFilePath);
请注意,我尝试使用以下方法加载文件:
Workbook newWorkBook = WorkbookFactory.create(new FileInputStream(templateFilePath) );
Files.readAllBytes(Paths.get(templateFilePath));
File file = new File(templateFilePath);
File file = new File(templateFilePath);
OPCPackage opcPackage = OPCPackage.open(file);
XSSFWorkbook newWorkBook = new XSSFWorkbook(opcPackage);
...并且仍然得到相同的结果。此外,我尝试了其他文件扩展名(.xlsx 和 .xls)无济于事。
其他注意事项:不显示内存错误。它只是不断地无限加载文件。我做了另一个测试,我从文件中删除了一些工作表,只剩下 8 个。这样“newWorkBook”就成功初始化了。但是,我需要阅读所有表格的文件,所以我想知道是否有其他方法可以这样做。