【问题标题】:R - openxlsx formatting - Is there a way to format a single cell with a 2-color gradient?R - openxlsx 格式 - 有没有办法用 2 色渐变格式化单个单元格?
【发布时间】:2019-12-16 10:51:30
【问题描述】:

我正在复制手动创建的 Excel 电子表格,其中用户非常具体地了解工作表的外观(精确的单元格间距、特定条件下的精确着色、边距/边框等)。

我可以使用 openxlsx(和其他一些软件包)在 R 中完成我需要的一切。

问题很简单:我找不到将双色渐变应用到单个单元格的方法。顶部为黄色,底部为橙色。

我一直在查看 openxlsx 包上的注释,并找到有关渐变数据条的信息。这不是我要找的……我只需要简单的两种颜色格式。

如果可能的话,我的猜测是这样的:

库(openxlsx)

line1

注意:我正在使用非友好的 Java 计算机。 Xlsx 包对我来说不是一个选项。此外,我对 tidyxl 的细微差别有些熟悉,但我更喜欢使用 openxlsx。

提前致谢。

【问题讨论】:

  • 顺便说一句,安装rJavaxlsx 包是一个常见问题,试试this
  • 谢谢——我知道如何解决这个问题,但是在这种情况下它不是一个选项,因为我不是在 Java 友好的环境中。

标签: r gradient openxlsx


【解决方案1】:

openxlsx 目前不支持单元格内的双色渐变。

【讨论】:

    【解决方案2】:

    由于我通过搜索答案偶然发现了这个问题,但它似乎仍然没有正式实施,我只想分享我的解决方法:

    您的样式在创建后保存在您的工作簿对象中,createStyle 如下:

    > str(wb[["styleObjects"]])
    List of 1
     $ :List of 4
      ..$ style:Reference class 'Style' [package "openxlsx"] with 28 fields
      .. ..$ fontName            : NULL
      .. ..$ fontColour          : NULL
      .. ..$ fontSize            : NULL
      .. ..$ fontFamily          : NULL
      .. ..$ fontScheme          : NULL
      .. ..$ fontDecoration      : chr(0) 
      .. ..$ borderTop           : NULL
      .. ..$ borderLeft          : NULL
      .. ..$ borderRight         : NULL
      .. ..$ borderBottom        : NULL
      .. ..$ borderTopColour     : NULL
      .. ..$ borderLeftColour    : NULL
      .. ..$ borderRightColour   : NULL
      .. ..$ borderBottomColour  : NULL
      .. ..$ borderDiagonal      : NULL
      .. ..$ borderDiagonalColour: NULL
      .. ..$ borderDiagonalUp    : logi FALSE
      .. ..$ borderDiagonalDown  : logi FALSE
      .. ..$ halign              : NULL
      .. ..$ valign              : NULL
      .. ..$ indent              : NULL
      .. ..$ textRotation        : NULL
      .. ..$ numFmt              : NULL
      .. ..$ fill                :List of 1
      .. .. ..$ fillFg:List of 1
      .. .. .. ..$ rgb: chr "FF1F497D"
      .. ..$ wrapText            : NULL
      .. ..$ locked              : NULL
      .. ..$ hidden              : NULL
      .. ..$ xfId                : NULL
      .. ..and 17 methods, of which 3 are  possibly relevant:
      .. ..  as.list, initialize, show#envRefClass
      ..$ sheet: chr "test"
      ..$ rows : int 3
      ..$ cols : int 1
    

    此时,您可以更改您喜欢的样式的fill 属性,如下所示:

    wb$styleObjects[[1]][["style"]][["fill"]] <- "<fill><gradientFill degree=\"90\"><stop position=\"0\"><color rgb=\"FFfec200\"/></stop><stop position=\"1\"><color rgb=\"FF5a9ad7\"/></stop></gradientFill></fill>"
    

    了解如何更改样式的最简单方法是使用您喜欢的样式构建一个 excel 文件,然后通过 loadWorkbook 加载整个工作簿,然后查看 wb[["styleObjects"]]

    【讨论】:

      猜你喜欢
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2020-09-09
      相关资源
      最近更新 更多