我使用Apache POI为报告生成xlsx表单。 POI生成的报告之一,我使用Microsoft Excel保存为另一个报告。比较原始文件和保存的文件时,有12Mb的差异。原始文件是15Mb,而保存的文件只有2.5Mb。使用的工作簿是XSSFWorkbook。Apache POI生成的xlsx文件大小大于通过Microsoft Excel手动创建的大小
是否有可能减少的Apache POI创建的文件大小
这里是代码片段我用:从代码
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] 我插入了很多没有价值的空白单元格,即。报告的某些部分没有任何价值。所以我在那里放了一个空白单元格。我也为空白单元格设置样式。这是原因吗?
在此先感谢。
根据给出的代码,我相信你遵循[http://poi.apache.org/faq.html#faq-N100EF]中给出的标准。确保你没有在你删除的代码中违反它。 – Renjith
excel文件实际上是档案 - 你可以将它们解压缩!!你可以尝试比较这两个版本 - 在ms excel打开之前和保存后ms excel –
ofcourse我试过。提取后的纸张很大。我的意思是原始为179mb,保存的文件为29mb。原始文件中有一些额外的数据。我需要知道一种通过代码来删除它们的方法。 – Sandeep