尝试编写R脚本,该脚本将转换文件夹中的多个xlsx工作簿文件,同时还将工作簿中的工作表转换为单独的csv文件。 寻找一个脚本来自动将代码应用于所有工作簿及其电子表格。
答案 0 :(得分:0)
要读取Excel文件,有several packages。
我个人对xlsx程序包感到满意,您可以使用该程序包读取Excel文件及其单个工作表。 This article看起来像它的要旨。
您读出的每个工作表都应该能够使用R的内置write.csv
(或write.csv2
)方法导出为CSV文件。
答案 1 :(得分:0)
以下是将单个xlsx工作簿转换为多个csv文件的示例。 请注意,不能保证类型转换正确。
xlsx_path <-"path_to_xlsx.xlsx"
sheet_names <- readxl::excel_sheets(xlsx_path)
# read from all sheets to a list of data frames
xlsx_data <- purrr::map(
sheet_names,
~readxl::read_excel(xlsx_path,.x,col_types = "text",col_names = FALSE)
)
# write a list of data frame to csv files
purrr::walk2(
xlsx_data,sheet_names,
~readr::write_csv(.x,paste0(xlsx_path,"-",.y,".csv"),col_names = FALSE)
)
# csv files will be saved as:
# path_to_xlsx-sheet1.xlsx, path_to_xlsx-sheet2.xlsx, ...
如果需要将此功能应用于许多xlsx文件。使用list.files()
获取所有xlsx文件的路径。并编写一个for循环或使用另一个map函数来迭代此过程。
答案 2 :(得分:0)
如果您正在使用Rstudio,则可能已经安装了软件包readxl
。他们有许多常见用例的工作流程,在这里进行了解释:https://readxl.tidyverse.org/articles/articles/readxl-workflows.html
他们还提供了这个不错的代码段来满足您的要求:
read_then_csv <- function(sheet, path) {
pathbase <- tools::file_path_sans_ext(basename(path))
df <- read_excel(path = path, sheet = sheet)
write.csv(df, paste0(pathbase, "-", sheet, ".csv"),
quote = FALSE, row.names = FALSE)
df
}
path <- readxl_example("datasets.xlsx")
sheets <- excel_sheets(path)
xl_list <- lapply(excel_sheets(path), read_then_csv, path = path)
names(xl_list) <- sheets
答案 3 :(得分:-1)
如果转到here,然后在搜索栏中输入“ excel”和“ xls”,则会得到可能有用的软件包和功能的列表。