XSSFWorkbook需要花费大量的时间来加载(XSSFWorkbook takes a lot

2019-06-25 16:14发布

我使用下面的代码:

File file = new File("abc.xlsx");
InputStream st = new FileInputStream(file);
XSSFWorkbook wb = new XSSFWorkbook(st);

在XLSX文件本身有25,000行和每行有500列的内容。 在调试过程中,我看到的是,第三排,我创建一个XSSFWorkbook,需要花费大量的时间(1小时!)来完成这一说法。

有没有更好的方式来访问原始的xlsx文件的值?

Answer 1:

首先,不要从InputStream当你有一个文件中加载XSSFWorkbook! 使用一个InputStream需要的一切到内存中,从而消耗了空间和需要时间的缓冲。 既然你不需要做缓冲,不!

如果你使用最新的运行每晚构建POI的,那么它很容易。 您的代码变为:

File file = new File("C:\\D\\Data Book.xlsx");
OPCPackage opcPackage = OPCPackage.open(file);
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);

否则,它是非常相似的:

File file = new File("C:\\D\\Data Book.xlsx");
OPCPackage opcPackage = OPCPackage.open(file.getAbsolutePath());
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);


Answer 2:

考虑使用POI的流版本。 这将需要的文件的子集加载到内存中。 这是大文件打交道时的推荐方法。

SXSSF POI



文章来源: XSSFWorkbook takes a lot of time to load