我需要同时使用xls和xlsx。我在使用xssf时出现了一个outofmemory错误,所以我改为sxssf,虽然这不起作用,但我想改变我的代码使用eventusermodel而不是ss usermodel。不幸的是,我不太了解如何使用事件api,所以如果有人可以提供一些示例代码从文件文件或输入流到工作簿。
答案 0 :(得分:0)
您应该使用Event API,这意味着您需要将SAX与阅读相结合,并SXSSFWorkbook
进行书写。
此example是Excel到CSV转换器。你应该在endElement()方法中做同样的事情。如果没有创建,则应创建新行;每次有值(name ==“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,以便更好地了解如何保存它。
希望它有所帮助!