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



要求

我需要一个新的XSSFCellStyle,因为我必须改变一些样式。

情况

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

我已经尝试过的

  • 我没有XSSFWorkbook,因此我不能打电话给workbook.createCellStyle().
  • XSSFCellStyle构造函数至少需要一个我也没有的StylesTable(因为我找不到从旧XSSFCellStyle获取它的方法(。
  • cellStyle.cloneStyleFrom(XSSFCellStyle Source)并没有真正克隆样式(它或多或少只是一个具有相同指针的副本,所以如果我在一个 cellStyle 上更改某些内容,"克隆的"cellStyle 具有相同的更改(。

问题

如何获得新XSSFCellStyle

问候,眨眼

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

然后你会做类似的事情

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

以创建新样式并从原始样式克隆设置。

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

XSSFCellStyle上有一个可用的clone()方法。
我不知道为什么,但我一开始就没有看到它。我的坏。

最新更新