在Apache-poi中创建xlsx文件而不是最终压缩它们

时间:2018-03-15 12:23:28

标签: java excel apache-poi xlsx

我使用apache-poi创建Excel电子表格(xlsx格式)。当我调用finish()时,这会导致电子表格实际上在磁盘上创建。

fos = new FileOutputStream(reportName);
workbook = new SXSSFWorkbook(FLUSH_SIZE);

.........

    public void finish() throws IOException
    {
        for (Worksheet next : worksheets)
        {
            SXSSFSheet sheet = (SXSSFSheet)next.getSheet();

            for (int i = 0; i < next.getMapping().size(); i++)
            {
                int columnWidth = next.getMapping().get(i).getColumnWidthFromValue() + FONT_MARGIN_OF_ERROR;
                columnWidth = columnWidth > MAX_COL_WIDTH ? MAX_COL_WIDTH : columnWidth;
                sheet.setColumnWidth(i, columnWidth * COL_WIDTH_MULTIPLIER);
            }
        }
        workbook.write(fos);
        fos.close();
        workbook.dispose();
    }

但是,xlsx格式实际上是一个压缩文件集合。因为我必须在使用apache-poi创建电子表格后对其进行一些额外的更改(它们不能用apache-poi完成)是否有办法让apache-poi创建文件但不能将它们压缩为xlsx。因为我要做的第一件事是解压缩它们当前的处理效率很低,因为poi zips文件,然后我必须解压缩它们,进行修改然后再自己压缩它们。

0 个答案:

没有答案