Réponse actualisée avec readxl (22 juin 2015)
Depuis que j'ai posté cette question, le readxl
a été publié. Il prend en charge à la fois xls
y xlsx
format. Contrairement à d'autres logiciels d'importation Excel, il fonctionne sous Windows, Mac et Linux sans nécessiter l'installation de logiciels supplémentaires.
Une fonction permettant d'importer toutes les feuilles d'un classeur Excel serait donc la suivante :
library(readxl)
read_excel_allsheets <- function(filename, tibble = FALSE) {
# I prefer straight data.frames
# but if you like tidyverse tibbles (the default with read_excel)
# then just pass tibble = TRUE
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
if(!tibble) x <- lapply(x, as.data.frame)
names(x) <- sheets
x
}
Cela pourrait être appelé avec :
mysheets <- read_excel_allsheets("foo.xls")
Ancienne réponse
En s'appuyant sur la réponse fournie par @mnel, voici une fonction simple qui prend un fichier Excel comme argument et renvoie chaque feuille comme un data.frame dans une liste nommée.
library(XLConnect)
importWorksheets <- function(filename) {
# filename: name of Excel file
workbook <- loadWorkbook(filename)
sheet_names <- getSheets(workbook)
names(sheet_names) <- sheet_names
sheet_list <- lapply(sheet_names, function(.sheet){
readWorksheet(object=workbook, .sheet)})
}
Ainsi, il pourrait être appelé avec :
importWorksheets('test.xls')