将多个Excel工作表转换为单独的csv文件

时间:2018-11-21 21:04:10

标签: excel csv command-line terminal type-conversion

现在,我使用了xslx2csv工具,该工具在关于stackoverflow的类似问题的其他答案中也看到过,并在终端中运行代码:xlsx2csv --all file.xlsx。但是,所有操作只是在我的终端中将xlsx文件的所有工作表打印为csv,而不是在当前目录的每张工作表中创建单独的csv文件。

这应该很简单,但是我找不到简单的答案。

我该如何解决?所有帮助非常感谢!

1 个答案:

答案 0 :(得分:0)

seem to be using R以来,这里是一个基于R的解决方案。您需要{readxl},{purrr}和{readr}软件包。我正在“命名”所有功能,所以您知道它们的来源。 我正在使用{readxl}中的示例Excel文件。

path_to_xlsx <- readxl::readxl_example("datasets.xlsx")

此Excel文件有4张纸。表格的名称由excel_sheets读取。

sheet_names <- readxl::excel_sheets(path_to_xlsx)

现在,我们将所有excel工作表导入一个列表。

sheets <- purrr::map(sheet_names, ~ readxl::read_excel(path_to_xlsx, sheet = .x))

我们得到4个数据帧或小标题的列表。我们命名吧。

base::names(sheets) <- sheet_names

现在,一次性将列表中的所有小标题导出到单独的CSV。

purrr::iwalk(sheets, ~ readr::write_excel_csv2(x = .x, path = paste0(.y, ".csv")))

list.files(pattern = "\\.csv$")
#> [1] "chickwts.csv" "iris.csv"     "mtcars.csv"   "quakes.csv"