假设我在一个名为 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)
}
有什么建议吗?
答案 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")