阿帕奇兴趣点 4.1。 XSSF 合并单元格边框

Apache POI 4.1. XSSF merged cells border

在旧版本中,您可以键入如下内容:

propertyTemplate.drawBorders(cellsRegionRange, BorderStyle.THICK, IndexedColors.YELLOW1.index, BorderExtent.OUTSIDE);

这会导致外部边框 - 甚至在合并的单元格周围,具有选定的颜色。 不幸的是,对于新版本的 POI,我似乎无法使用索引颜色,因为获取自定义 RGB 颜色索引的方法不起作用,并且被贬低或标记为仅测试。

因此,由于着色,我不得不放弃 propertyTemplate class。现在我知道如何使用 XSSFColor 构造函数和 XSSFCellStyle 为边框着色:

XSSFColor borderColorXSF = new XSSFColor(rgbB, null);

但我不知道如何将 XSSFCellStyle 应用于单元格的合并区域,我尝试了 RegionUtil,我认为它只会覆盖 XSSFCellStyle,所以一切都是黑色的,甚至是填充颜色。

所以我的问题是绕过 propertyTemplate class 的正确方法是什么?

我找到的唯一解决方案是遍历每个单元格,检查其边框是内边框还是外边框,然后相应地设置单元格样式边框。 我基本上自己写了一些 HSSF PropertyTemplate class 方法。 请注意,我发现您不能混合使用 HSSF 和 XSSF 方法或对象,因为即使程序运行无异常,它也会开始出现不可预测的行为。