【发布时间】:2016-02-10 11:02:22
【问题描述】:
我正在使用 Apache POI 为报告生成 xlsx 表。我使用 Microsoft excel 保存的 POI 生成报告之一。当比较原始文件和保存的文件时,有 12Mb 的差异。原始文件为 15Mb,而保存的文件仅为 2.5Mb。使用的工作簿是 XSSFWorkbook。
是否可以减小 Apache POI 创建的文件大小
这是我用过的代码sn-p:
XSSFWorkbook workbookTitle = new XSSFWorkbook(fileInputStream);
workbook = new SXSSFWorkbook(workbookTitle, maxRows);
font = workbook.createFont();
font.setFontHeightInPoints((short) 9);
font.setFontName(FONT_NAME);
cellTwoDecimal = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
cellTwoDecimal.setDataFormat(format.getFormat("0.00"));
cellTwoDecimal.setFont(font);
cellCommon = workbook.createCellStyle();
cellCommon.setFont(font);
cellText = workbook.createCellStyle();
cellText.setDataFormat((short) BuiltinFormats.getBuiltinFormat("text"));
cellText.setFont(font);
cellWrpText = workbook.createCellStyle();
cellWrpText.setWrapText(true);
cellWrpText.setFont(font);
Row row;
Cell cell;
for (int i = 0; i < size; i++) {
row = excelSheet.createRow(rowIndex++);
cell = row.createCell(i);
cell.setCellValue(rowHeader);
cell.setCellStyle(cellCommon);
}
我已经从代码中删除了一些内部逻辑。请分享你的想法。
[编辑 1] 我插入了很多没有价值的空白单元格,即。报告的某些部分将没有任何价值。所以我在那里放了一个空白单元格。我也在为空白单元格设置样式。会是这个原因吗?
提前致谢。
【问题讨论】:
-
根据给出的代码,我相信您遵循 [poi.apache.org/faq.html#faq-N100EF] 中给出的标准。确保您在删除的代码中没有违反它。
-
excel 文件实际上是存档 - 您可以解压缩它们!!。您可以尝试比较两个版本 - 在 ms excel 中打开之前和使用 ms excel 保存之后
-
当然我试过了。提取后的床单很大。我的意思是原始文件是 179mb,保存的文件是 29mb。原始文件中有一些额外的数据。我需要知道一种通过代码删除它们的方法。
标签: java apache-poi xlsx