You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:33:35