要求
我需要一个新的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对象,它们指向列表中的相同style-index工作簿中的样式集...

    10-06 15:48