0
我需要使用xls和xlsx。當使用xssf時,我得到了一個outofmemory錯誤,所以我改爲sxssf,雖然這不起作用,但我想更改我的代碼以使用eventusermodel而不是ss usermodel。不幸的是,我不太清楚如何使用事件API,所以如果有人可以提供一些示例代碼,從文件文件或輸入流到工作簿。如何使用apache poi eventusermodel從.xlsx文件到工作簿?
我需要使用xls和xlsx。當使用xssf時,我得到了一個outofmemory錯誤,所以我改爲sxssf,雖然這不起作用,但我想更改我的代碼以使用eventusermodel而不是ss usermodel。不幸的是,我不太清楚如何使用事件API,所以如果有人可以提供一些示例代碼,從文件文件或輸入流到工作簿。如何使用apache poi eventusermodel從.xlsx文件到工作簿?
您應該使用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爲了更好地理解如何保存它。
希望它有幫助!
您是否嘗試過[POI網站上發佈的示例](http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api)? – Gagravarr
是的,但我需要轉換爲工作簿,所以我不知道如何開始..甚至在看網站上的例子 – Marisa
你不能。如果你想要一個完整的工作簿,請購買更多的內存!如果你的資源非常有限,你必須在較低的水平上閱讀...... – Gagravarr