- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Apache Poi,我已将用于将数据写入 Excel 电子表格的代码从 HSSF 转换为 SXSSF,以便在写入大文件时减少内存占用。我遇到的一个问题是尝试根据数据调整列的大小
for (int 0 = 1; i < next.getMapping().size(); i++)
{
next.getSheet().autoSizeColumn(i);
}
现在无法提示我的专栏没有被跟踪
我通过先添加解决了这个问题
((SXSSFSheet)next.getSheet()).trackAllColumnsForAutoSizing();
这行代码和我在最终保存之前调用的调整大小代码
workbook.write(fos);
fos.close();
workbook.dispose();
我不太清楚的是
更新所以我查看了 SXSSFSheet 的 javadoc [ https://poi.apache.org/apidocs/org/apache/poi/xssf/streaming/SXSSFSheet.html#trackAllColumnsForAutoSizing()]它说
Adjusts the column width to fit the contents.
This process can be relatively slow on large sheets, so this should normally only be called once per column, at the end of your processing. You can specify whether the content of merged cells should be considered or ignored. Default is to ignore merged cells.
Special note about SXSSF implementation: You must register the columns you wish to track with the SXSSFSheet using trackColumnForAutoSizing(int) or trackAllColumnsForAutoSizing(). This is needed because the rows needed to compute the column width may have fallen outside the random access window and been flushed to disk. Tracking columns is required even if all rows are in the random access window.
New in POI 3.14 beta 1: auto-sizes columns using cells from current and flushed rows.
它没有给出任何关于内存缓慢的警告,它还说它考虑了所有行,但我使用的是 3.15,我不认为它正在考虑所有行。我有一些列,其中数据占用的空间比第零行中的列标题少,但创建的电子表格的列宽度小于第一行中标题的宽度。
当我处理每一行并存储最宽的数据时,我可以很容易地存储数据的宽度。然而,虽然我可以使用 setColumnWidth() 我如何考虑不同的字体
最佳答案
由于 Apache POI 是开源的,您可以 read the implementation code and see how it works!
跟踪列不会对内存占用产生太大影响,因为主存储每列只有一个对象:
Map<Integer, ColumnWidthPair> maxColumnWidths =
new HashMap<Integer, ColumnWidthPair>();
跟踪的作用是减慢行的添加速度,因为对于跟踪列中的每个单元格,POI 在将其刷新到磁盘之前必须计算出该单元格的宽度。
如果您的文件是可预测的,通常最好打开所有列的跟踪,写出前几十行,然后关闭对文件末尾的跟踪。这将使您很好地猜测宽度,而无需计算每个单元格。
但是,如果您不知道哪一行将包含每个单元格的最长值,则需要承受轻微的性能影响并跟踪整个文件中的所有列和所有行。不过,这并不比不做多做多少工作
关于java - 在 Apache Poi 中调用 trackAllColumnsForAutoSIizing 的内存影响是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809631/
如何将扩展名为 ttf 和 otf 的新字体导入 POI API,而不将这些字体安装到环境中? Is there a jar that i should update it with the path
在这个问题的所有引用资料中,它没有解决并且不给maven因为没有在maven中做。错误是 包 org.apache.poi.ss.usermodel 可以从多个模块访问:poi、poi.ooxm在
上下文: 尝试使用 Apache POI 的 poi 和 poi-ooxml 4.0.0 版本 jar 打开 XLSX 文件 问题: 程序抛出错误,如下所示。当我使用 4.0.0 版本时,我发现此错误
刚开始使用 POI 3.10 创建 Word 文档(XWPF)。 大多数事情都是直截了当的,但我不明白如何添加页码。 我添加了页脚,但页脚中的文字在每一页上都相同 最佳答案 我在 LibreOffic
我正在使用 Apache POI 评估工作簿的每个公式单元格。当一个单元格包含对标准 excel 函数 NOW() 的调用时,Poi 会正确评估它并将调用替换为当前时间 - 格式为 VM 的默认时区。
我已经阅读了许多与我的要求相关的博客和论坛,但到目前为止,我能够在我得到的所有帮助下为第一级生成项目符号或编号。谁能指导我如何使用 apache poi 创建多级编号。 想知道 Apache POI
我正在使用 apache poi 创建 Excel 工作表。我有像 - 337499.939437217 这样的数字,我想在 Excel 中显示它,而不进行四舍五入。此外,单元格格式应为数字(对于某些
情况是,我合并了第一行的所有五个单元格,并在第一行的第一个单元格中插入了一个图像。我的要求是使图像在第一行水平居中。 我试过 cellStyle.setAlignment(CellStyle.ALIG
我正在尝试替换模板 DOCX使用 Apache 的文档 POI通过使用 XWPFDocument类(class)。我在文档中有标签和 JSON文件以读取替换数据。我的问题是 DOCX 中的文本行似乎以
好吧,老实说:标题并没有说出全部真相。我正在使用带有多个按钮(保存、关闭、编辑等)和一个执行 POI 操作的按钮的自定义控件 - 它生成一个 Word 文件。 我在这里遇到一个问题:点击 POI 按钮
有什么方法可以让我获得 excel 连续显示的格式化值,而不是我从流中返回的原始值? 或者这是否属于“公式评估”类别,这不支持? 最佳答案 如果您有 Cell您正在尝试从中获取数据,请尝试以下操作 D
在 xlsx 工作簿中,有一些单元格带有一些无界 SUMIF 公式,如下所示:SUMIF(MySheetname!$B:$B,$E4,MySheetname!$I:$I) . 使用 Apache PO
我正在创建一个 Java 程序来读取 Excel 工作表并创建一个逗号分隔的文件。当我运行带有空白列的示例 excel 文件时,第一行工作正常,但其余行跳过空白单元格。 我已经阅读了将空白单元格插入行
我目前正在使用 POI 使用 XSLF 编辑 PPTX 文件内嵌入图表中的数据。我找到了一个使用带有饼图的模板 ppt 的示例,效果非常好。我还尝试编辑折线图并且它有效。但是,当我尝试编辑嵌入式条形图
我正在学习使用 Selenium 和 Excel 进行数据驱动测试。我正在参加一门在线类(class),要求在 Maven 中添加 Apache poi 和 poi-ooxml 依赖项。 我正在努力理
我们有一个具有画廊功能的应用程序,我们想将图像导出到 powerpoint 演示文稿中。我能够做到这一点,但由于图像的大小和方向不同,图像边界几乎总是超出 ppt 幻灯片。我如何调整图像的大小(我不想
我有一个带有以下幻灯片布局的 pptx: System.out.println("Available slide layouts:"); for(XSLFSlideMaster master
我正在尝试使用 Java 中的 POI api 创建 Excel 工作表。在那个 Excel 工作表中,我想要一个只有 TIME 的单元格。通过设置它,我们可以像在数字列中那样将单元格包含在该特定列的
Apache Poi 可以计算和返回公式中函数的结果。但是对于特殊函数 HYPERLINK(),它只返回“显示值”,而不是实际计算的超链接值。 我有一个 Excel 文件,其中包含复杂的计算超链接,这
我正在使用 Apache POI。 我可以使用“org.apache.poi.hwpf.extractor.WordExtractor”从文档文件中读取文本 甚至使用“org.apache.poi.h
我是一名优秀的程序员,十分优秀!