如何使用 R 将多个 csv 文件编译成单个 xlsx 文件?

时间:2021-05-20 03:27:14

标签: r

假设我在一个名为 Path 的目录中有许多 csv 文件:

abc.csv
def.csv
xyz.csv

如何将这些文件编译成单个 xlsx 文件,其中每个 csv 都成为其自己的选项卡?我试过使用下面的函数,但不幸的是只有第一个 csv 最终出现在 xlsx 中:

path <- "Path"
filenames_list <- list.files(path = path, full.names = TRUE)

for (i in 1:length(filenames_list)) {

  sheet_name <- strsplit(strsplit(filenames_list[i], "/")[[1]][4], "\\.")[[1]][1]
  file_name <- paste0('Path/output.xlsx')
  temp <- read.csv(filenames_list[i])
  write.xlsx(temp, file = file_name, sheetName = sheet_name, row.names = F, append = T)

}

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以使用 sapply -

尝试这种方法
path <- "Path"
filenames_list <- list.files(path = path, full.names = TRUE)

list_files <- sapply(filenames_list, read.csv, simplify = FALSE)
names(list_files) <- tools::file_path_sans_ext(basename(names(list_files)))

writexl::write_xlsx(list_files, 'data.xlsx')

答案 1 :(得分:2)

这是一个可能的 tidyverse 解决方案:

library(openxlsx)
library(tidyverse)

# Make sure your working directory is set to the location where your .csv files are

list.files(pattern = "*.csv") %>% 
  map(., ~read_csv(.)) %>% 
  write.xlsx(., "My Multi-tabbed File.xlsx")
相关问题