从另一个XSSFCellStyle(POI APACHE)创build新的或克隆的XSSFCellStyle

需求

我需要一个新的XSSFCellStyle因为我必须改变一些XSSFCellStyle

情况

我只有一个XSSFCellStyle – 我没有它所属的XSSFCell 。 因此,我也无法访问相关的XSSFSheetXSSFWorkbook

我已经试过了

  • 我没有XSSFWorkbook因此我无法调用workbook.createCellStyle()
  • XSSFCellStyle构造函数至less需要一个StylesTable ,我也没有(因为我找不到从旧的XSSFCellStyle获取它的XSSFCellStyle )。
  • cellStyle.cloneStyleFrom(XSSFCellStyle Source)并没有真正克隆样式(它或多或less只是一个具有相同指针的副本,所以如果我改变一个cellStyle上的“clone”cellStyle有相同的变化)。

我怎样才能得到一个新的XSSFCellStyle

问候,winklerrr

由于Excel将样式存储在xls / xlsx中的方式,您需要使用Workbook / Sheet才能创build新样式。 实际上,样式不是作为单元格的一部分存储的,而是作为工作簿中的单独列表存储的。 由于这种风格,如果可能的话,也应该跨单元重用。

那么你会做类似的事情

  XSSFCellStyle clone = wb.createCellStyle(); clone.cloneStyleFrom(origStyle); 

创build一个新的风格,克隆原来的设置。

有一个XSSFCellStyle.clone(),但我不确定它是否会做你期望的工作簿的链接不会被更新,所以你将有两个Style对象指向列表中相同的样式索引工作簿中的样式…

XSSFCellStyle上有一个clone()方法。
我不知道为什么,但是我没有看到它。 我的错。