Memory 如何使用ApachePOI懒洋洋地读取大型Excel2007文件
我想用ApachePOI阅读一个大的Excel2007文件。声明应使用Memory 如何使用ApachePOI懒洋洋地读取大型Excel2007文件,memory,apache-poi,lazy-evaluation,Memory,Apache Poi,Lazy Evaluation,我想用ApachePOI阅读一个大的Excel2007文件。声明应使用文件来节省内存 打开工作簿时,请选择.xls HSSF工作簿或.xlsx XSSF工作簿,可以从文件或 输入流。使用文件对象可以降低内存消耗, 而InputStream需要更多内存,因为它必须缓冲 整个文件 因此,我大致这样写: opcPackage = OPCPackage.open(file); XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); XSSFSheet
文件
来节省内存
打开工作簿时,请选择.xls HSSF工作簿或.xlsx
XSSF工作簿,可以从文件或
输入流。使用文件对象可以降低内存消耗,
而InputStream需要更多内存,因为它必须缓冲
整个文件
因此,我大致这样写:
opcPackage = OPCPackage.open(file);
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
XSSFSheet sheet = workbook.getSheetAt(0);
rows = sheet.rowIterator();
if (rows.hasNext()) {
Row row = rows.next();
System.out.println(row.getCell(1).getStringCellValue());
}
但是,对于大约10000行以上的工作表,这会导致java.lang.OutOfMemoryError:java堆空间
我希望迭代只能缓慢地加载那些要读取的行,就像流一样
如何解决大型Excel文件的内存问题?我可以用ApachePOI懒洋洋地阅读吗?POI提供了一个EventModelAPI,可以处理懒洋洋的加载。有关更多详细信息,请访问和