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"]]
.
我正在复制手动创建的 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"]]
.