XSSFWorkbook需要花费很多时间来加载

我正在使用下面的代码:

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

xlsx文件本身有25,000行,每行有500列的内容。 在debugging过程中,我看到第三行创build了一个XSSFWorkbook,需要大量的时间(1小时!)来完成这个语句。

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

谢谢Abhishek S

首先,不要在有文件时从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); 

考虑使用POI的Streaming版本。 这将根据需要将文件的一个子集加载到内存中。 处理大文件时,这是推荐的方法。

POI SXSSF