2015-06-17 154 views
-1

我想读取一个大的Excel文件。我特地到POI库,但我不能够理解POI event Library如何使用POI库来读取大型Excel文件(.xlsx)?

目前的代码我只是想读取Excel文件并更改数据类型后写的每个元素到一个新的文件,然后将其保存在数据库中。

我也尝试过sjxlsx.jar。但是在实现时,我发现该jar不包含所有的类方法。

SimpleXLSXWorkbook workbook = new SimpleXLSXWorkbook(new File("C:/test.xlsx")); 

     HSSFWorkbook hsfWorkbook = new HSSFWorkbook(); 

     org.apache.poi.ss.usermodel.Sheet hsfSheet = hsfWorkbook.createSheet(); 

     Sheet sheetToRead = workbook.getSheet(0, false); 

     SheetRowReader reader = sheetToRead.newReader(); 

     Cell[] row; 

     int rowPos = 0; 

     while ((row = reader.readRow()) != null) {  
      org.apache.poi.ss.usermodel.Row hfsRow = hsfSheet.createRow(rowPos); 

      int cellPos = 0; 

      for (Cell cell : row) { 

      if(cell != null){ 

       org.apache.poi.ss.usermodel.Cell hfsCell = hfsRow.createCell(cellPos); 

       hfsCell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING); 
       hfsCell.setCellValue(cell.getValue()); 
      } 
     cellPos++; 
    } 
    rowPos++; 
} 
return hsfSheet; 

任何人都可以帮助我如何使用XSSF和SAX(事件API)来读取大型Excel文件?

+2

你可以粘贴你试过的代码吗?以及你在阅读时收到什么错误信息? –

+0

我还没有尝试过使用apache POI的任何代码。我试过的那个给了我内存不足的错误。对于sjxlsx以下是代码 – rahul

回答

-1

内存不足错误通过添加-Xmx500m(例如)来解决。 JVM有一个默认的最大内存,实际上相对较低。

的java -Xmx500m com.yourpackage.Application

此示例将其设置为500微克。

+0

我已经尝试过使用更高的内存级别,但我仍然得到相同的error.java.lang.OutOfMemoryError:超出GC开销限制 – rahul

+0

请注意,“GC开销限制超出”消息不直接相关到最大堆。这个答案可能有所帮助:http://stackoverflow.com/questions/1393486/error-java-lang-outofmemoryerror-gc-overhead-limit-exceeded – llogiq

相关问题