如何使用apache poi eventusermodel从.xlsx文件到工作簿?

时间:2012-06-07 18:34:03

标签: apache-poi xssf hssf

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

1 个答案:

答案 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,以便更好地了解如何保存它。

希望它有所帮助!