我正在尝试读取一个大的 XLSX 文件。Excel 文件大约有 500K 行。我需要阅读第 2 列。
OPCPackage pkg;
pkg = OPCPackage.open("File path");
XSSFWorkbook myWorkBook = new XSSFWorkbook(pkg);
Sheet sheet = myWorkBook.getSheetAt(2);
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
if (row_num > ROW_ESCAPE)
{
Cell cell = row.getCell(2);
if (!cell.getStringCellValue().toString().trim().isEmpty())
{
System.out.println(cell.getStringCellValue().toString());
}
System.out.println("hi"+row_num);
}
row_num++;
}
Run Code Online (Sandbox Code Playgroud)
它打印到第 39723 行之后抛出以下异常
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.util.regex.Matcher.<init>(Matcher.java:225)
at java.util.regex.Pattern.matcher(Pattern.java:1093)
at org.apache.poi.xssf.usermodel.XSSFRichTextString.utfDecode(XSSFRichTextString.java:482)
at org.apache.poi.xssf.usermodel.XSSFRichTextString.getString(XSSFRichTextString.java:297)
at org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:262)
at Main.get_titles(Main.java:484)
at Main.analyze_Importsheet(Main.java:461)
at Main.but_sel_imp_sheetActionPerformed(Main.java:220)
at …Run Code Online (Sandbox Code Playgroud)