当前位置: 首页 > 知识库问答 >
问题:

Apache POI生成的xlsx文件大小大于通过Microsoft Excel手动创建的文件大小

谷梁晟
2023-03-14
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个答案

莫宝
2023-03-14

根据您的“编辑1”...如果我没理解错的话,你创建的单元格没有任何价值。您不必这样做。如果您不想写一些东西,那么就不要创建空单元格。根据我的POI经验,如果你想写东西,你只需要创建行和单元格。

从这个观点来看,很明显,您的xlsx非常大(很多很多单元格对象)。我认为MS Excel删除了手动保存时的空单元格。

补充:需要提到的是,还有一个问题,样式你的单元格。请尽量少使用CellStyle的实例。如果具有相同样式的单元格,则不要创建具有相同属性的CellStyle的新实例。请应用CellStyle的同一实例。也不要为简单的文本单元格分配样式。在这种情况下,excel使用默认样式(Background='white',textcolor='black',font='any default',size='any default',format='default')。

 类似资料:
  • 问题是输出文件的大小大于原始文件 编辑:-我知道的解决方案,即读写文件字节明智,但我的问题是为什么这是发生的?

  • 提前感谢你的帮助

  • 我正在使用PyCharm社区版2016,我注意到我无法打开大型数据输入文件或日志(20MB)。编辑简单地说“文件XXX太大(大小)”。 不仅如此,似乎没有办法改变限制。官方文档提到了一种增加使用intellisense的最大大小的方法,但根本没有增加可以打开的文件的最大大小。这是真的吗?这真的是一个完全无法打开大型日志的IDE吗?

  • 我正在使用的读取XLSX文件。我收到一个错误。后来,对java类使用增加了堆大小,仍然会重复同样的错误。 在上面的代码段中,执行停止在处,并抛出指定的错误。谁能建议更好的方法来读取大的XLSX文件。

  • 问题内容: 这是我希望做的: 我想将ajax请求发送到文件(最好使用jQuery),并且一旦文件被加载,请确定所请求文件的大小。 经过一番谷歌搜索,很显然,我什至对一个正确的问题都不知道要提出这个问题。任何帮助将不胜感激。 问题答案: 您可以发出HTTP HEAD请求,并通过读取Content- Length HTTP标头获得近似的文件大小。 这种请求用于获取有关该请求隐含的URL的元信息,而无需

  • 问题内容: 我想创建一个特定大小的文件(例如1GiB)。内容并不重要,因为我会在其中填充内容。 我正在做的是: 但这需要太长时间才能完成。我花了大约1分钟的时间。有什么可以改善的呢? 问题答案: 警告 此解决方案将提供您可能无法预期的结果。参见UPD … 1创建新文件。 2寻求1个字节的大小。 3写1个字节。 4利润:) UPD: 查找和截断都在我的系统(Linux + ReiserFS)上创建稀