我使用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文件,然后我必须解压缩它们,进行修改然后再自己压缩它们。