gpt4 book ai didi

java - 在大数据(数千行和列)的情况下,为每个单元格设置 CellStyle() 会花费很长时间

转载 作者:行者123 更新时间:2023-12-02 10:20:55 24 4
gpt4 key购买 nike

作为我们项目的一部分,我们必须构建一个 Excel 报告,其中包含数千行和列。每行中的许多单元格将具有不同的单元格样式,例如绿色文本、红色文本、不同的背景填充等。

有人可以建议一种更好的方法来处理这种情况吗?

如有任何疑问,请告诉我。

我尝试将 CellStyle 应用于一行中的每个单元格。使用..getCell().setCellStyle()。但是当存在很多行和很多列时,此操作会消耗大量时间。因此,对于大量数据,Excel 报告本身不会永远被下载。我还尝试先应用 rowStyle,然后在需要的地方应用单独的单元格样式。但应用 rowStyle 的行为有点不同。应用 rowStyle 不会影响 Excel 模板中的现有单元格样式,并且单元格不会出现,我从 java 代码创建单元格,这对我们来说是一个问题。如果 RowStyle 应用于该行中存在的所有单元格,无论单元格是否已经具有单元格样式或单元格不存在,那么我们应该很好。

根据公司政策,我无法发布代码。我对此感到遗憾。

我希望将所需的样式应用到每个单元格,并且执行不会花费太多时间。

谢谢,萨加尔。

最佳答案

当涉及到单元格样式时,您需要小心。 Excel 仅允许工作簿中使用特定数量的单元格样式(Excel 2003 ~ 4000 | Excel 2007 及更高版本 ~64000,如所述 here )。

您不应为每个单元格创建新的 cellStyle,而应定义单元格样式、缓存它们并在需要时将它们分配给单元格。

不要这样做:

   for (int i = 0; i < 10000; i++) 
{
Row row = sheet.createRow(i);
Cell cell = row.createCell(0);

CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
style.setFont(font);
cell.setCellStyle(style);
}

你应该这样做:

   CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
style.setFont(font);
for (int i = 0; i < 10000; i++)
{
Row row = sheet.createRow(i);
Cell cell = row.createCell(0);
cell.setCellStyle(style);
}

您可以阅读有关此的更多信息 here .

关于java - 在大数据(数千行和列)的情况下,为每个单元格设置 CellStyle() 会花费很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com