无法在java中读取使用SXSSFWorkbook编写的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在java中读取使用SXSSFWorkbook编写的文件相关的知识,希望对你有一定的参考价值。

我想读写大型excel文件。因此,我使用SXSSFWorkbook编写excel文件和XSSF和SAX EVENT API来读取文件。

但是,如果读取excel文件,并且使用SXSSFWOrkbook写入excel文件,则单元格内容为空。如果我打开已写入的Excel文件并再次保存,则会正确显示内容。

以下是我用来编写excel文件的代码。

    SXSSFWorkbook wb = new SXSSFWorkbook();
    wb.setCompressTempFiles(true);

    SXSSFSheet sh = (SXSSFSheet) wb.createSheet();
    // sh.setRandomAccessWindowSize(100);// keep 100 rows in memory,
    // exceeding rows will be flushed to disk
    for (int rownum = 0; rownum < 100; rownum++) {
        Row row = sh.createRow(rownum);
        for (int cellnum = 0; cellnum < 10; cellnum++) {
            Cell cell = row.createCell(cellnum);
            String address = new CellReference(cell).formatAsString();
            cell.setCellValue(address);
        }

    }

    FileOutputStream out = new FileOutputStream("D:\tempsxssf.xlsx");
    wb.write(out);
    out.flush();
    out.close();        
    wb.dispose();

我遇到了大麻烦,有人可以帮我解决问题吗?

答案

我根据POI documentation使用了另一个构造函数

SXSSFWorkbook(workbook, rowAccessWindowSize, compressTmpFiles, useSharedStringsTable)

像这样:

SXSSFWorkbook workbook = new SXSSFWorkbook(null, 1000, true, true);

您可以在哪里启用共享字符串表

以上是关于无法在java中读取使用SXSSFWorkbook编写的文件的主要内容,如果未能解决你的问题,请参考以下文章

SXSSFWorkbook 无法获取row

《JAVA》编程中怎么用SXSSFWorkbook对已存在的excel操作进行写数据操作

POI SXSSFWorkbook 读取模板 存在公式解决

JAVA编程中用Apache POI 怎么用SXSSFWorkbook对已存在的excel(.xlsx)操作进行写数据操作

java excel poi 中的SXSSFWorkbook wb = new SXSSFWorkbook(workbook, 1000);是啥意思?

Java-API-POI-Excel:SXSSFWorkbook Documentation