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

为R语言生成的表格添加合并表头并导出至Excel的方案求助

需求说明

我有一段生成统计表格的R代码,现在需要给表格加一个顶层合并表头,同时把第一列的表头合并成跨两行的样式。最终要导出到Excel里,已经试过flextable,想找其他能用的方案。

现有代码

tbl_summmary <-
  tibble(
    outcome = c("A (%)", "B (%)", "C (%)", "D (%)", "Total (n)"),
    group_1 = c(.25, .25, .125, .325, 10),
    group_2 = c(.50, 0.0, .325, .125, 20),
    group_3 = c(.10, .40, .125, .325, 40))

tbl_summmary %>% as.data.frame()

期望的表格样式

表格要有两层表头:

  • 最顶部是一个横跨所有列的合并单元格(比如命名为"分组统计结果")
  • 第二层里,第一列的表头合并成两行,显示为"指标";剩下三列分别显示"group_1""group_2""group_3"
  • 表格内容里,前四行的数值要显示成百分比格式,最后一行的Total保持原数字
可行方案:用openxlsx包实现

openxlsx专门针对Excel操作,能直接设置合并表头和格式,步骤如下:

  1. 安装并加载所需包:
install.packages("openxlsx")
library(openxlsx)
library(dplyr)
  1. 预处理数据格式,把百分比行转成带%的文本,总行保留原数值:
tbl_formatted <- tbl_summmary %>%
  mutate(across(group_1:group_3, ~ifelse(row_number() <=4, paste0(.*100, "%"), as.character(.))))
  1. 创建工作簿、设置表头并写入数据:
# 创建新工作簿
wb <- createWorkbook()
addWorksheet(wb, "统计表格")

# 写入顶层合并表头
writeData(wb, "统计表格", "分组统计结果", startRow = 1, startCol = 1)
mergeCells(wb, "统计表格", cols = 1:4, rows = 1)

# 准备第二层表头数据
second_header <- data.frame(
  指标 = c("指标", ""),
  group_1 = "group_1",
  group_2 = "group_2",
  group_3 = "group_3"
)
writeData(wb, "统计表格", second_header, startRow = 2, colNames = FALSE)

# 合并第一列的第二层表头
mergeCells(wb, "统计表格", cols = 1, rows = 2:3)

# 写入处理好的表格内容
writeData(wb, "统计表格", tbl_formatted, startRow = 4, colNames = FALSE)

# 保存Excel文件
saveWorkbook(wb, "统计表格.xlsx", overwrite = TRUE)

如果偏好gt包的语法风格,也可以用gt生成表格后通过gtsave导出为Excel,但openxlsx对Excel的格式控制更直接高效。

内容的提问来源于stack exchange,提问作者user14176250

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:25:23