簡體   English   中英

如何將 xlsx 文件轉換為 RStudio 中的 csv 文件? 需要使用多個電子表格轉換多個工作簿

[英]How to convert xlsx files to csv files in RStudio? Need to convert multiple workbooks all with multiple spreadsheets

嘗試編寫 R 腳本,該腳本將轉換文件夾中的多個 xlsx 工作簿文件,同時還將工作簿中的工作表轉換為單獨的 csv 文件。 尋找一個腳本來自動將代碼應用於所有工作簿及其電子表格。

為了讀取 Excel 文件,有幾個包

我個人對xlsx package 感到滿意,您可以使用它來閱讀 Excel 文件以及它們的各個工作表。 這篇文章看起來會給你它的要點。

然后,您讀出的每個工作表都應該能夠使用 R 的內置write.csv (或write.csv2 )方法導出到 CSV 文件。

下面是將單個 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, ...

如果您需要將此 function 應用於許多 xlsx 文件。 使用list.files()獲取所有 xlsx 文件的路徑。 並編寫一個 for 循環或使用另一個 map function 來迭代這個過程。

如果您使用的是 Rstudio,您可能已經安裝了 package 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

如果您將 go 轉到此處並在搜索欄中輸入“excel”和“xls”,您將獲得可能有幫助的軟件包和功能列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM