【问题标题】:How to convert xlsx files to csv files in RStudio? Need to convert multiple workbooks all with multiple spreadsheets如何在 RStudio 中将 xlsx 文件转换为 csv 文件?需要使用多个电子表格转换多个工作簿
【发布时间】:2019-10-10 20:53:11
【问题描述】:

尝试编写一个 R 脚本,该脚本将转换文件夹中的多个 xlsx 工作簿文件,同时还将工作簿中的工作表转换为单独的 csv 文件。 正在寻找一个脚本来自动将代码应用于所有工作簿及其电子表格。

【问题讨论】:

标签: r excel csv xlsx


【解决方案1】:

读取Excel文件,有several packages

我个人对xlsx 包感到满意,您可以使用它来阅读 Excel 文件及其各个工作表。 This article 看起来它会给你它的要点。

您读出的每个工作表都应该能够使用 R 的内置 write.csv(或 write.csv2)方法导出为 CSV 文件。

【讨论】:

    【解决方案2】:

    以下是将单个 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函数来迭代这个过程。

    【讨论】:

    • 非常感谢您的帮助!您介意在哪里输入我自己的数据吗?老实说,今天是我编码的第一天,我很迷茫!
    • 正如您提到的,这是您编码的第一天,您可能需要比堆栈溢出答案更多的指导。请阅读@Alex 的答案,因为他包含了一个教程,这对您应该很有帮助。了解基本工作流程后,您会发现这里的答案更有意义。
    • 现在正在调查!当然偶然发现了另一组错误,但在制作过程中。谢谢!
    【解决方案3】:

    如果您使用的是 Rstudio,您可能已经安装了包 readxl。他们有许多常见用例的工作流程在这里解释:https://readxl.tidyverse.org/articles/articles/readxl-workflows.html

    他们还提供了这个很好的代码 sn-p 来做你要求的事情:

    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
    

    【讨论】:

      【解决方案4】:

      如果您转到here 并在搜索栏中输入“excel”和“xls”,您将获得可能有帮助的软件包和函数列表。

      【讨论】:

        猜你喜欢
        • 2019-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多