R - openxlsx 格式化 - 有没有办法用 2 色渐变格式化单个单元格?

R - openxlsx formatting - Is there a way to format a single cell with a 2-color gradient?

我正在复制手动创建的 Excel 传播sheet,其中用户对 sheet 的外观非常具体(精确的单元格间距、精确的颜色和特定的条件,margins/borders,等等)。

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

问题很简单:我找不到将双色渐变应用于单个单元格的方法。黄色在上,橙色在下。

一直在看openxlsx包的注释,找到了渐变数据条的资料。这不是我要找的...我只需要简单的双色格式。

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

库(openxlsx)

line1 <- createStyle(halign = "left", textDecoration = "bold", fontName = "Calibri", fontSize = "11", fgFill = c(_____, _____))

注意:我正在使用不友好的 Java 计算机。 Xlsx 包不适合我。此外,我有点熟悉 tidyxl 的细微差别,但我更愿意使用 openxlsx。

提前致谢。

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

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

您的样式在创建后保存在您的工作簿对象中 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"]].