如何修改R语言代码实现Excel多工作表的读取与保存?
修改R代码保存Excel多工作表
你可以在原函数中添加保存逻辑,将每个工作表对应的数据框保存为单独文件(CSV、Excel等格式均可),以下是两种实用修改方案:
方案1:保存为CSV文件
CSV格式兼容性强,适合多数场景:
library(readxl) multiplesheets <- function(fname, save_path = getwd()) { # 获取所有Excel工作表的信息 sheets <- readxl::excel_sheets(fname) tibble <- lapply(sheets, function(x) readxl::read_excel(fname, sheet = x)) data_frame <- lapply(tibble, as.data.frame) # 为数据框分配名称 names(data_frame) <- sheets # 循环保存每个数据框为CSV for (sheet_name in sheets) { write.csv(data_frame[[sheet_name]], file = file.path(save_path, paste0(sheet_name, ".csv")), row.names = FALSE) cat("已保存工作表:", sheet_name, "\n") } # 可选:返回数据框列表用于后续处理 return(data_frame) } # 指定文件路径,若需自定义保存目录可添加save_path参数 path <- "/Users/mallikagupta/Desktop/Gfg.xlsx" multiplesheets(path)
方案2:保存为单独Excel文件
如果需要保留Excel格式,可使用writexl包:
先安装并加载依赖包:
install.packages("writexl") library(writexl)
修改后的函数:
library(readxl) library(writexl) multiplesheets <- function(fname, save_path = getwd()) { # 获取所有Excel工作表的信息 sheets <- readxl::excel_sheets(fname) tibble <- lapply(sheets, function(x) readxl::read_excel(fname, sheet = x)) data_frame <- lapply(tibble, as.data.frame) # 为数据框分配名称 names(data_frame) <- sheets # 循环保存每个数据框为单独Excel文件 for (sheet_name in sheets) { write_xlsx(data_frame[[sheet_name]], path = file.path(save_path, paste0(sheet_name, ".xlsx"))) cat("已保存工作表:", sheet_name, "\n") } # 可选:返回数据框列表用于后续处理 return(data_frame) } # 指定文件路径 path <- "/Users/mallikagupta/Desktop/Gfg.xlsx" multiplesheets(path)
关键修改说明
- 新增
save_path参数,支持自定义保存目录,默认使用当前工作目录 - 添加循环遍历逻辑,针对每个工作表的数据框执行保存操作
- 保留原有读取和命名逻辑,新增保存完成的提示信息
- 可选返回数据框列表,方便后续继续处理数据
内容的提问来源于stack exchange,提问作者Inuraghe
相关产品推荐
相关产品推荐

