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

如何从多个DataFrame列表导出同名DataFrame至独立Excel文档

解决方法

我们可以用openxlsx包高效实现这个需求,它支持创建多工作表的Excel文件且无需Java依赖。以下是具体步骤和代码:

1. 安装并加载依赖包

install.packages("openxlsx")
library(openxlsx)

2. 核心实现代码

假设你的LIST_DF是按COMPANY_NAME拆分后的列表,每个元素是对应公司的DataFrame集合(包含同名的DF1、DF2等),元素名称为公司名(比如"Company1"、"Company2"):

# 提取所有唯一的DataFrame名称(如DF1、DF2)
df_names <- unique(unlist(lapply(LIST_DF, names)))

# 遍历每个同名DataFrame组,生成对应Excel文件
lapply(df_names, function(df_name) {
  # 创建新工作簿
  wb <- createWorkbook()
  
  # 遍历每个公司,将对应DF写入工作表
  lapply(names(LIST_DF), function(company_name) {
    addWorksheet(wb, sheetName = company_name)
    writeData(wb, sheet = company_name, x = LIST_DF[[company_name]][[df_name]])
  })
  
  # 保存Excel文件,文件名以DF名称命名
  saveWorkbook(wb, file = paste0(df_name, ".xlsx"), overwrite = TRUE)
})

代码说明

  • df_names:获取所有需要处理的同名DF组的名称,确保不遗漏任何一组。
  • 外层lapply:针对每个DF组(如DF1)创建独立的Excel文件。
  • 内层lapply:将每个公司的该DF写入Excel的对应工作表,直接用公司名作为工作表名称,避免序号匹配错误。
  • saveWorkbook:将生成的工作簿保存为以DF名称命名的文件,overwrite = TRUE允许覆盖已存在的同名称文件。

替代方案(用for循环实现)

如果你更习惯for循环,也可以写成以下形式:

df_names <- unique(unlist(lapply(LIST_DF, names)))

for (df_name in df_names) {
  wb <- createWorkbook()
  
  for (company_name in names(LIST_DF)) {
    addWorksheet(wb, sheetName = company_name)
    writeData(wb, sheet = company_name, x = LIST_DF[[company_name]][[df_name]])
  }
  
  saveWorkbook(wb, paste0(df_name, ".xlsx"), overwrite = TRUE)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:33:08