R - 将 Excel 工作簿拆分为 csv 文件

scr*_*Owl 0 excel r

在 R 中,有没有办法读取 Excel 工作簿,然后将每个工作表写入单独的 csv 文件?我查看了“xlsx”和“XLConnect”包,但找不到任何有用的东西。

jan*_*svm 5

这是一种tidyverse方法(在我的工作目录中有一个名为test.xlsx的示例 Excel 文件,其中包含三个名为 Sheet1、Sheet2 和 Sheet3 的工作表):

library(readxl)
library(readr)

# Read sheets and use for filenames
sheets <- excel_sheets("test.xlsx")
filenames <- paste0(sheets, ".csv")

# read_excel only reads a single sheet, so lapply over each sheet name
dats <- lapply(sheets, read_excel, path = "test.xlsx")

# Save each data frame with different filename using write_csv
lapply(seq_along(dats), function(i) write_csv(dats[[i]], filenames[i]))
Run Code Online (Sandbox Code Playgroud)

编辑:对于直接给定输入和输出路径执行此操作的函数,您可以执行以下操作:

excel_to_csv <- function(path, out_dir = NULL) {
  if (is.null(out_dir)) out_dir <- dirname(path)
  sheets <- readxl::excel_sheets(path)
  filenames <- file.path(out_dir, paste0(sheets, ".csv"))
  dats <- lapply(sheets, readxl::read_excel, path = path)
  lapply(seq_along(dats), function(i) readr::write_csv(dats[[i]], filenames[i]))
  invisible()
}
Run Code Online (Sandbox Code Playgroud)

这会将 CSV 文件保存在指定目录中,或者如果未指定,则保存在与 Excel 文件相同的文件夹中。