阅读大型Excel文件.xlsx

时间:2016-04-07 10:11:30

标签: java excel apache-poi sax

我正在使用图书馆

org.apache.poi 


XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);

我正在尝试

org.xml.sax

库,但无法将其转换为工作簿

注意:在最终结果我希望返回XSSFWorkbook

以上代码将耗尽内存,任何帮助将不胜感激 提前谢谢

2 个答案:

答案 0 :(得分:1)

如果输入数据对于可用内存而言太大,则有两个选项。

a)通过-Xmx java命令行选项提供更多内存

b)使用Streaming-API of POI

如果文件最终适合内存,

选项a)将很容易。如果文件对于可用的物理内存来说太大,则需要查看流选项,尤其是示例XLSX2CSV显示如何从任意大的.xlsx文件中读取数据,尽管有一些功能可以需要访问开箱即用的多个单元格。

答案 1 :(得分:1)

InputStream is = new FileInputStream(new File("yourXLSX file path"));
Workbook workbook = StreamingReader.builder().rowCacheSize(100).bufferSize(4096).open(is))
for (Sheet sheet: workbook) {
    //System.out.println(sheet.getSheetName());
    for (Row r: sheet) {
        for (Cell c: r) {
            //System.out.println(c.getStringCellValue());
        }
    }
}