我正在使用图书馆
org.apache.poi
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
我正在尝试
org.xml.sax
库,但无法将其转换为工作簿
注意:在最终结果我希望返回XSSFWorkbook
以上代码将耗尽内存,任何帮助将不胜感激 提前谢谢
答案 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());
}
}
}