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

win*_*rrr 6 java excel apache-poi xssf

需求

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

情况

我只有一个XSSFCellStyle- 我没有XSSFCell属于它.因此我也无法访问相关XSSFSheetXSSFWorkbook.

我已经尝试过了什么

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

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

问候,winklerrr

cen*_*tic 6

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

然后你会做类似的事情

  XSSFCellStyle clone = wb.createCellStyle();
  clone.cloneStyleFrom(origStyle);
Run Code Online (Sandbox Code Playgroud)

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

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


win*_*rrr 2

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