我需要同时使用xls和xlsx。使用xssf时出现内存不足错误,因此我更改为sxssf,尽管这不起作用,但我想将代码更改为使用eventusermodel而不是ss usermodel。不幸的是,我对如何使用事件api不太了解,因此如果有人可以提供一些示例代码来从文件文件或输入流转到工作簿。
您应该使用事件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,可以更好地了解如何保存它。