请告诉我有一个单元格范围,有必要使用 Apache POI 显示该范围的所有内部边界
CellRangeAddress region=new
CellRangeAddress(7,9,0,4);
RegionUtil.setBorderRight(BorderStyle.MEDIUM,region,sheet);
RegionUtil.setBorderLeft(BorderStyle.MEDIUM,region,sheet);
RegionUtil.setBorderBottom(BorderStyle.MEDIUM,region,sheet);
RegionUtil.setBorderTop(BorderStyle.MEDIUM,region,sheet);
上面的代码显示了外部边框,但内部边框是必须的,我知道你可以为范围的每个单元格创建一个样式并遍历所有,但我认为有一个更合理的方式。谢谢你。
我知道的唯一方法是为每个单元格创建样式。
但我们必须记住,工作簿受到 XLS 和 XLSX 格式的特殊性的限制。例如,XLSX 中的样式不能超过 64000。而在 2003 版本中,完全只允许 4000。还有其他限制。
也就是说,这个想法是创建一组独特的 CellStyles,然后在不同的单元格中重用它们。
然后当您创建单元格时,只需重用 myCellStyle:
更有趣的是如何选择这样的样式。我无法显示生产代码,但想法是这样的:创建样式缓存(地图)。密钥是根据所有可能不同的样式值生成的。至少是这样的:
为了使密钥不会太大,您可以使用散列。
此外,一切都很简单。我们构建一个样式 ID 并在 Map 中查找它。如果有 - 好吧,我们采用现有的。否则,我们创建并存储在缓存中。祝你好运。
我很高兴听到其他解决方案和评论。
我找到了这个解决方案
这是文档的链接: Javadoc