如何用R读取文件夹中带统一密码的Excel并提取指定列
R语言批量读取加密Excel生成年度报表
实现步骤:
加载依赖包
先确保已安装并加载excel包,未安装的话先执行安装命令:install.packages("excel") library(excel)获取目标文件列表
将存放周度报表的文件夹设为工作目录,提取所有.xlsx格式文件的路径:# 替换为你的报表实际存放路径 setwd("D:/年度报表/周度数据") # 获取所有Excel文件的完整路径 excel_files <- list.files(pattern = "\\.xlsx$", full.names = TRUE)批量读取并提取指定列
定义读取单文件的函数,读取加密文件后提取你需要的指定列,再通过循环批量读取并合并所有数据:# 自定义读取函数:读取加密文件+提取目标列 read_encrypted_excel <- function(file_path) { # 读取带密码的Excel文件 raw_data <- xl.read.file(path = file_path, password = "你的统一密码") # 替换成你实际需要提取的列名,比如c("日期", "销售额", "部门") target_data <- raw_data[, c("列名1", "列名2", "列名3")] return(target_data) } # 批量读取所有文件并合并为一个数据框 annual_report <- do.call(rbind, lapply(excel_files, read_encrypted_excel))保存年度报表
将合并好的数据保存为新的报表文件:# 保存为CSV格式(无需额外包) write.csv(annual_report, "年度汇总报表.csv", row.names = FALSE) # 若需保存为Excel格式,可使用openxlsx包(需提前安装) # install.packages("openxlsx") # library(openxlsx) # write.xlsx(annual_report, "年度汇总报表.xlsx", rowNames = FALSE)
注意事项:
- 确保所有周度报表的指定列列名完全一致,否则合并时会出现列不匹配问题
- 若部分文件存在空行或异常数据,可在读取函数中添加清洗逻辑,比如
na.omit(target_data)
内容的提问来源于stack exchange,提问作者Yvonne
相关产品推荐
相关产品推荐

