Note:使用此代码,您可以指定更具体的十六进制 colored颜色 值.例如"#00FF00"而不是"Green".
library(purrr)
library(openxlsx)
library(tidyr)
wide <- long_data |>
pivot_wider(id_cols = digits, names_from = category, values_from = value)
colors <- long_data |>
pivot_wider(id_cols = digits, names_from = category, values_from = color_code)
color_loc <- map(set_names(unique(long_data$color_code)), ~ as.data.frame(which(colors == .x, arr.ind = TRUE)))
color_style <- imap(color_loc, ~ createStyle(fontColour = .y))
wb <- write.xlsx(wide, "output.xlsx")
iwalk(color_loc, ~ addStyle(wb, 1, color_style[[.y]], rows = .x$row + 1, cols = .x$col))
saveWorkbook(wb, "output.xlsx", overwrite = TRUE)
wide
是宽格式数据,colors
是相同的 struct 化数据,但具有与值相同的单元格级 colored颜色 .
> wide
# digits A B C
# <int> <dbl> <dbl> <dbl>
# 1 1 10 20 30
# 2 2 15 25 35
# 3 3 12 22 32
# 4 4 18 28 38
# 5 5 14 24 34
> colors
# digits A B C
# <int> <chr> <chr> <chr>
# 1 1 red red red
# 2 2 red blue blue
# 3 3 blue blue blue
# 4 4 green green green
# 5 5 green green green
- 对于每种唯一的 colored颜色 ,我们将获得该 colored颜色 的所有单元格的行和列索引位置.因此,如果您更改 colored颜色 、添加 colored颜色 和/或删除 colored颜色 ,此代码将起作用:
> color_loc
# $red
# row col
# 1 1 2
# 2 2 2
# 3 1 3
# 4 1 4
#
# $blue
# row col
# 1 3 2
# 2 2 3
# 3 3 3
# 4 2 4
# 5 3 4
#
# $green
# row col
# 1 4 2
# 2 5 2
# 3 4 3
# 4 5 3
# 5 4 4
# 6 5 4
- 对于每种 colored颜色 ,我们创建一个工作表样式
color_style
.
- 最后,在创建工作簿对象(
wb
)之后,我们将Each样式应用于特定的行和列索引(在Excel中使用行+1来说明标题行).
Output个