96 votes

Lire toutes les feuilles de calcul d'un classeur Excel dans une liste R avec data.frames

Je comprends que XLConnect peut être utilisé pour lire une feuille de calcul Excel dans R. Par exemple, cela permettrait de lire la première feuille de calcul d'un classeur appelé test.xls en R.

library(XLConnect)
readWorksheetFromFile('test.xls', sheet = 1)

J'ai un classeur Excel avec plusieurs feuilles de calcul.

Comment importer toutes les feuilles de calcul d'un classeur dans une liste en R où chaque élément de la liste est un data.frame pour une feuille donnée, et où le nom de chaque élément correspond au nom de la feuille de calcul dans Excel ?

8voto

Nikhil Gupta Points 189

Compléter la réponse de Paul. Les feuilles peuvent également être concaténées en utilisant quelque chose comme ceci :

data = path %>% 
excel_sheets() %>% 
set_names() %>% 
map_df(~ read_excel(path = path, sheet = .x), .id = "Sheet")

Bibliothèques nécessaires :

if(!require(pacman))install.packages("pacman")
pacman::p_load("tidyverse","readxl","purrr")

7voto

mnel Points 48160

Vous pouvez charger le livre de travail et ensuite utiliser lapply , getSheets y readWorksheet et faire quelque chose comme ça.

wb.mtcars <- loadWorkbook(system.file("demoFiles/mtcars.xlsx", 
                          package = "XLConnect"))
sheet_names <- getSheets(wb.mtcars)
names(sheet_names) <- sheet_names

sheet_list <- lapply(sheet_names, function(.sheet){
    readWorksheet(object=wb.mtcars, .sheet)})

5voto

TheMI Points 1289

Pour lire plusieurs feuilles d'un classeur, utilisez le package readxl comme suit :

library(readxl)
library(dplyr)

final_dataFrame <- bind_rows(path_to_workbook %>%
                              excel_sheets() %>%
                              set_names() %>%
                              map(read_excel, path = path_to_workbook))

Ici, bind_rows ( dplyr ) mettra toutes les lignes de données de toutes les feuilles. dans un cadre de données, et path_to_workbook est l'emplacement de vos données : "dir/de/les/données/workbook".

3voto

Contango Points 7976

excel.link fera l'affaire.

En fait, j'ai trouvé qu'il était plus facile à utiliser que XLConnect (même si les deux paquets ne sont pas si difficiles à utiliser). La courbe d'apprentissage pour les deux a été d'environ 5 minutes.

À titre d'information, vous pouvez facilement trouver tous les paquets R qui mentionnent le mot "Excel" en vous rendant à l'adresse suivante http://cran.r-project.org/web/packages/available_packages_by_name.html

3voto

jgarces Points 27

Juste pour simplifier la réponse très utile de @Jeromy Anglim :

allsheets <- sapply(readxl::excel_sheets("your_file.xlsx"), simplify = F, USE.NAMES = T,
            function(X) readxl::read_excel("your_file.xlsx", sheet = X))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X