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

时间:2015-10-14 07:18:10

标签: java excel apache-poi xssf

要求

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

情况

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

我已经尝试了什么

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

问题

如何获得新的XSSFCellStyle

问候,winklerrr

2 个答案:

答案 0 :(得分:6)

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

然后你会做类似

的事情
  XSSFCellStyle clone = wb.createCellStyle();
  clone.cloneStyleFrom(origStyle);

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

有一个XSSFCellStyle.clone(),但我不确定它是否会按预期执行,因为不会更新指向工作簿的链接,因此您将有两个Style对象指向相同的样式索引在工作簿中的样式列表...

答案 1 :(得分:0)

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