我需要一个新的XSSFCellStyle
,因为我必须更改一些样式。
我只有一个XSSFCellStyle
- 我没有它所属的XSSFCell
。因此,我也无权访问相关的XSSFSheet
或XSSFWorkbook
。
XSSFWorkbook
因此我无法致电workbook.createCellStyle()
。XSSFCellStyle
构造函数至少需要StylesTable
,我也没有(因为我找不到从旧XSSFCellStyle
获取它的方法)。cellStyle.cloneStyleFrom(XSSFCellStyle Source)
并没有真正克隆样式(它或多或少只是一个具有相同指针的副本,因此如果我在一个cellStyle上更改某些内容,则“克隆”的cellStyle会有相同的更改)。如何获得新的XSSFCellStyle
?
问候,winklerrr
答案 0 :(得分:6)
由于Excel将样式存储在xls / xlsx中的方式,您需要提供工作簿/工作表才能创建新样式。事实上,样式不是作为单元格的一部分存储,而是作为工作簿中的单独列表存储。由于这种风格,如果可能的话,也应该在细胞中重复使用。
然后你会做类似
的事情 XSSFCellStyle clone = wb.createCellStyle();
clone.cloneStyleFrom(origStyle);
创建一个新样式并从原始样式克隆设置。
有一个XSSFCellStyle.clone(),但我不确定它是否会按预期执行,因为不会更新指向工作簿的链接,因此您将有两个Style对象指向相同的样式索引在工作簿中的样式列表...
答案 1 :(得分:0)
clone()
上有XSSFCellStyle
方法。
我不知道为什么,但我一开始没有看到它。我的坏。