2012-06-07 99 views
0

我需要使用xls和xlsx。當使用xssf時,我得到了一個outofmemory錯誤,所以我改爲sxssf,雖然這不起作用,但我想更改我的代碼以使用eventusermodel而不是ss usermodel。不幸的是,我不太清楚如何使用事件API,所以如果有人可以提供一些示例代碼,從文件文件或輸入流到工作簿。如何使用apache poi eventusermodel從.xlsx文件到工作簿?

+0

您是否嘗試過[POI網站上發佈的示例](http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api)? – Gagravarr

+0

是的,但我需要轉換爲工作簿,所以我不知道如何開始..甚至在看網站上的例子 – Marisa

+0

你不能。如果你想要一個完整的工作簿,請購買更多的內存!如果你的資源非常有限,你必須在較低的水平上閱讀...... – Gagravarr

回答

0

您應該使用Event API,這意味着您需要將SAX用於讀取,SXSSFWorkbook用於寫入。

example是Excel到CSV轉換器。你應該在endElement()方法中做同樣的事情。如果未創建,則應該創建一個新行,並且每次有值時都創建一個新單元(名稱==「v」)。設置單元格類型和新的價值:

if ("v".equals(name)) { 
      if (row == null) 
       row = sheet.createRow(0); 
      cell = row.createCell(thisColumn); 

      switch (nextDataType) { 
      case BOOL: 
       cell.setCellType(Cell.CELL_TYPE_BOOLEAN); 
       char first = value.charAt(0); 
       thisStr = first == '0' ? "FALSE" : "TRUE"; 
       if (thisStr == "FALSE") 
        cell.setCellValue(false); 
       else 
        cell.setCellValue(false); 

      case OTHER_CELL_TYPE: 
       //.... 

      default: 
       cell.setCellType(Cell.CELL_TYPE_BLANK); 
       break; 
      } 
      //......More proccessing 
} 

這裏有the apache poi SXSSF example爲了更好地理解如何保存它。

希望它有幫助!

相關問題