0

我需要同时使用 xls 和 xlsx。使用 xssf 时出现内存不足错误,因此我更改为 sxssf,虽然这不起作用,但我想更改我的代码以使用 eventusermodel 而不是 ss usermodel。不幸的是,我不太了解如何使用事件 api,所以如果有人可以提供一些示例代码来从文件文件或输入流转到工作簿。

4

1 回答 1

0

您应该使用 Event API,这意味着您需要结合 SAX 进行读取和SXSSFWorkbook写入。

这个例子是一个 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
}

这里有apache poi SXSSF 示例,以便更好地了解如何保存它。

于 2012-06-22T09:25:54.317 回答