我想使用 Apache POI 生成一个 Excel,其中可以显示大约 2000 条记录,其中每条记录都包含一个日期和一个值。
我希望这个 Excel 格式正确,为单元格背景着色,并应用适当的数字格式。
我可以完成这两项任务,但我无法像我想要的那样高效地进行格式化。
我尝试应用格式的 3 种方法如下: 所有三种方法都涉及使用预先格式化的 Excel 模板。然而,问题是在 Excel 中要做多少格式化(以及如何应用格式化)以及在 Java 中做多少。
方法一:在Excel中自己格式化一行,用Java代码复制格式化。例如:
Row existingRow = mySheet.getRow(4);
Cell existingCell = existingRow.getCell(0);
CellStyle currentStyle = existingCell.getCellStyle();
for (int w = 0; w < refData.size(); w++) {
MyValues aa = refData.get(w);
Row r = CellUtil.getRow(w + 4, mySheet);
CellUtil.getCell(r, 0).setCellValue(aa.getMarketDate());
if (w>0) {
CellUtil.getCell(r, 0).setCellStyle(currentStyle);
}
方法 2:在 Excel 中选择包含所需格式的单元格并粘贴到我需要的区域(2000 行),然后使用 Apache POI 填写数据
方法 3:使用 Excel 将格式应用于列,然后使用 Apache POI 填写数据。
第三种方法对我来说更可取,因为 (a) 当我可以在 Excel 中预先格式化时,我不需要开始编写 Java 代码 [请注意,我的实际问题包括数十列而不仅仅是一列] (b) 将格式应用于列在工作簿使用的内存方面非常有利。
唯一的问题是,当 Apache POI 写入复制和粘贴格式的单元格时,它们显示得很好。当它写入格式已应用于列的单元格时,它会在粘贴之前删除格式。
有没有办法解决这个问题?我认为没有,因为 Apache POI 通过单独考虑每一行来工作。例如,要将格式应用于列,需要将格式分别应用于列中的每个单元格