如何使用POI库来读取大型excel文件(.xlsx)?

时间:2015-06-17 12:29:25

标签: java excel apache-poi

我正在尝试阅读一个大型excel文件。我查看了POI库,但我无法理解POI event Library

中的代码

我只想读取excel文件,并在更改数据类型后将每个元素写入新文件,然后将其保存在数据库中。

我也尝试过sjxlsx.jar。但是在实现时,我发现jar并不包含所有类方法。

 SimpleXLSXWorkbook workbook = new SimpleXLSXWorkbook(new File("C:/test.xlsx"));

        HSSFWorkbook hsfWorkbook = new HSSFWorkbook();

        org.apache.poi.ss.usermodel.Sheet hsfSheet = hsfWorkbook.createSheet();

        Sheet sheetToRead = workbook.getSheet(0, false);

        SheetRowReader reader = sheetToRead.newReader();

        Cell[] row;

        int rowPos = 0;

        while ((row = reader.readRow()) != null) {     
            org.apache.poi.ss.usermodel.Row hfsRow = hsfSheet.createRow(rowPos);

            int cellPos = 0;

            for (Cell cell : row) {

            if(cell != null){

                org.apache.poi.ss.usermodel.Cell hfsCell = hfsRow.createCell(cellPos);

                hfsCell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                hfsCell.setCellValue(cell.getValue());
            }
        cellPos++;
    }
    rowPos++;
}
return hsfSheet;

任何人都可以帮助我如何使用XSSF和SAX(事件API)来读取大型Excel文件吗?

1 个答案:

答案 0 :(得分:-1)

内存不足错误通过添加-Xmx500m(例如)来解决。 JVM有一个默认的最大内存,实际上相对较低。

java -Xmx500m com.yourpackage.Application

此示例将其设置为500 meg。