如何在Java中读取超过20 MB的Excel文件大小?

时间:2018-07-09 22:27:53

标签: java excel string collections apache-poi

我正在尝试读取超过20 MB的Excel文件。在Eclipse中执行时出现错误。

public class ReadRfdsDump {

    public void readRfdsDump() 
    {
        try
        {

             FileInputStream file = new FileInputStream(new File("C:\\Users\\esatnir\\Videos\\sprint\\sprintvision.sprint.com_Trackor Browser_RF Design Sheet_07062018122740.xlsx"));


             XSSFWorkbook workbook = new XSSFWorkbook(file);


             XSSFSheet sheet = workbook.getSheetAt(0);
             DataFormatter df = new DataFormatter();

             for(int i=0;i<2;i++)
             {
                 Row row= sheet.getRow(i);
                 System.out.println(df.formatCellValue(row.getCell(1)));
             }

        }catch(Exception e)
        {
            e.printStackTrace();
        }



    }
}

错误,我明白了-

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
    at com.sun.org.apache.xerces.internal.dom.ElementImpl.getAttributes(Unknown Source)
    at org.apache.xmlbeans.impl.store.Locale.loadNode(Locale.java:1423)
    at org.apache.xmlbeans.impl.store.Locale.loadNodeChildren(Locale.java:1403)
    at org.apache.xmlbeans.impl.store.Locale.loadNode(Locale.java:1445)
    at org.apache.xmlbeans.impl.store.Locale.loadNodeChildren(Locale.java:1403)
    at org.apache.xmlbeans.impl.store.Locale.loadNode(Locale.java:1445)
    at org.apache.xmlbeans.impl.store.Locale.loadNodeChildren(Locale.java:1403)
    at org.apache.xmlbeans.impl.store.Locale.loadNode(Locale.java:1445)
    at org.apache.xmlbeans.impl.store.Locale.loadNodeChildren(Locale.java:1403)
    at org.apache.xmlbeans.impl.store.Locale.loadNode(Locale.java:1445)
    at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1385)
    at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1370)
    at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:370)
    at org.apache.poi.POIXMLTypeLoader.parse(POIXMLTypeLoader.java:164)
    at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument$Factory.parse(Unknown Source)
    at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:226)
    at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:218)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.parseSheet(XSSFWorkbook.java:443)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:408)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:169)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:300)
    at ciq.read.com.ReadRfdsDump.readRfdsDump(ReadRfdsDump.java:22)
    at ciq.read.com.Main.main(Main.java:10)

如何解决此问题,还有什么其他方法可以读取Java中如此长的excel文件?

0 个答案:

没有答案