要求
我需要一个新的XSSFCellStyle
,因为我必须改变一些样式。
情况
我只有一个XSSFCellStyle
- 我没有它所属的XSSFCell
。因此,我也无法访问相关的XSSFSheet
或XSSFWorkbook
。
我已经尝试过的
- 我没有
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()
方法。
我不知道为什么,但我一开始就没有看到它。我的坏。