Apache POI – 写入Excel模板而不覆盖现有的单元格格式

我正在使用Apache POI将数据写入Excel模板。 该模板仅在第一行包含标题,但是我也将特定样式应用于整个列(例如“会计”和“百分比”)。

将数据写入新单元格时使用这些格式将会很好。 但是,如果我使用createRowcreateCell方法,单元格格式将被覆盖,并为所有单元格获得General。 如果我尝试使用getRowgetCell ,我碰到检索空白单元格的NullPointerExceptions。

有没有办法使用保存在模板中的预先存在的单元格格式? 或者我坚持通过API自己设置数据格式?

谢谢你的帮助。

如果您已将特定样式应用于整个列,则可以使用SheetgetColumnStyle方法检索该CellStyle ,并将其传递给基于0的列索引。 它检索一个正常的CellStyle对象,可以在CellStyle被接受的任何地方使用,比如在CellsetCellStyle方法中 。

为避免NullPointerException ,如果行或单元不存在, getRowgetCell可能分别返回null 。 您将需要调用createRow和/或createCell来创buildCell ,您可以在其中始终调用setCellStyle

cell.setCellStyle(sheet.getColumnStyle(index)效果很好。