如何用R的openxlsx包为多个独立Excel工作簿应用样式?
为分组导出的Excel工作簿添加样式
我们可以利用openxlsx包的自定义样式功能,实现表头浅蓝色背景、列宽调整及规整表格格式的需求,以下是完整实现代码:
library(dplyr) library(openxlsx) # 生成示例数据 df <- data.frame(Date = Sys.Date() - 0:4, Logical = c(TRUE, FALSE, TRUE, TRUE, FALSE), Currency = paste("$", -2:2), Accounting = -2:2, hLink = "https://CRAN.R-project.org/", Percentage = seq(-1, 1, length.out = 5), TinyNumber = runif(5)/1e+09, stringsAsFactors = FALSE) # 按Date分组 dat_grouped <- df %>% group_by(Date) # 定义表头样式:浅蓝色背景、加粗居中 header_style <- createStyle(fgFill = "#DCE6F1", textDecoration = "bold", halign = "center") # 定义各列宽度(可根据实际内容调整数值) col_widths <- c(12, 10, 10, 12, 25, 12, 15) # 遍历分组,导出带样式的Excel文件 lapply(group_split(dat_grouped), function(x){ # 创建工作簿对象 wb <- createWorkbook() # 添加工作表 addWorksheet(wb, sheetName = "Data") # 写入数据 writeData(wb, sheet = "Data", x = x, startRow = 1, startCol = 1) # 为表头行应用样式 addStyle(wb, sheet = "Data", style = header_style, rows = 1, cols = 1:ncol(x), gridExpand = TRUE) # 设置列宽 setColWidths(wb, sheet = "Data", cols = 1:ncol(x), widths = col_widths) # 保存工作簿 saveWorkbook(wb, file = paste0(x$Date[1], ".xlsx"), overwrite = TRUE) })
关键说明
createStyle():自定义表头样式,fgFill指定背景色(可替换为你需要的浅蓝色十六进制码),textDecoration设置字体加粗,halign让表头文字居中对齐。setColWidths():根据列内容设置适配的宽度,数组内数值与列顺序一一对应。- 使用
createWorkbook()+addWorksheet()的组合,替代直接调用write.xlsx(),能更灵活地控制Excel的格式细节。 addStyle()的gridExpand = TRUE参数确保样式覆盖表头的所有单元格。
内容的提问来源于stack exchange,提问作者Jaskeil
相关产品推荐
相关产品推荐

