当前位置: 首页 > 面试题库 >

如何加快Apache POI中列的自动调整大小?

丌官昊天
2023-03-14
问题内容

我使用以下代码来自动调整电子表格中的列大小:

for (int i = 0; i < columns.size(); i++) {
   sheet.autoSizeColumn(i, true);
   sheet.setColumnWidth(i, sheet.getColumnWidth(i) + 600);
}

问题是,如果大型电子表格的行数超过3000行,则需要花10分钟以上的时间来自动调整每一列的大小。但是,对于小型文档而言,它运行得非常快。有什么可以帮助实现自动化以更快地工作的吗?


问题答案:

对我有用的解决方案:

可以避免合并区域,所以我可以遍历其他单元格并最终自动调整为最大的单元格,如下所示:

int width = ((int)(maxNumCharacters * 1.14388)) * 256;
sheet.setColumnWidth(i, width);

其中1.14388是“ Serif”字体和256个字体单位的最大字符宽度。

自动调整的性能从10分钟提高到6秒。



 类似资料:
  • 我在加载到锚机中的FXML布局方面遇到了问题。 我有一个Scene.fxml,上面有一个AnchorPane和一个按钮。按下按钮将nternal.fxml加载到AnchorPane中。Internal.fxml有一个文本字段,其中AnchorPane约束设置为左右。就这样。 虽然现在调整窗口大小时,文本字段不会调整大小。 为什么文本字段不调整自身大小?下面代码中的错误在哪里? 主要的java: 场

  • Android最近增加了根据视图大小以及最小和最大文本大小调整TextViews文本大小的支持。 https://developer.Android.com/guide/topics/ui/look-and-feel/autosizing-textView.html 不幸的是,他们不支持EditTexts,那么EditText还有其他的替代方案吗?

  • 问题内容: Qt解决方案是对 resizeColumnsToContent() 的单个调用,在.NET中,可以使用 TextRenderer.MeasureText() ,而JTable可以使用 AUTO_RESIZE_ALL_COLUMNS 。 在SWT中,是否有一种方法可以在填充列之后以编程方式调整列的大小? 调用将返回相同的值,因此将忽略列中剩余的字符。 TableColumn具有,但是如何

  • 我正在用ApachePOI创建一个excel文件,excel已经生成,但我无法根据我发布的代码中的单元格值来调整列 这就是我在excel中创建标题的方式 麻烦你帮我调一下栏目,我是阿帕契坡新手

  • 我尝试过自动调整我使用Jython Apache POI制作的Excel列的大小。我找到了这个线程:Apache POI Excel-如何配置要扩展的列?,但我仍然搞不清楚。 我尝试添加“sheet1.autoSizeColumn(1)”,但它不会改变任何东西。在每个可用列上调用它不是更好吗,因为为什么不希望每个列的格式都很好呢? 也许这在Jython中是不可能的? 恭喜你,克里斯托夫。

  • 我有一个表,它只包含列ID和name。但是,这个表被嵌入到一个SplitPane中,让用户有机会轻松快速地更改大小。我希望桌子总是在整个宽度内填满。ID列的大小设置为70,并且只有Name列应该始终传播到表的剩余宽度。我使用FXML创建布局。有没有可能直接在FXML中设置这个?