Оновлена відповідь за допомогою readxl (22 червня 2015 р.)
З моменту розміщення цього питання readxl
пакет був випущений. Він підтримує як формат, так xls
і xlsx
формат. Важливо, що на відміну від інших пакунків імпорту Excel, він працює на Windows, Mac та Linux, не вимагаючи встановлення додаткового програмного забезпечення.
Отже, функцією імпорту всіх аркушів книги Excel буде:
library(readxl)
read_excel_allsheets <- function(filename, tibble = FALSE) {
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
}
Це можна назвати за допомогою:
mysheets <- read_excel_allsheets("foo.xls")
Стара відповідь
Спираючись на відповідь, надану @mnel, ось проста функція, яка приймає файл Excel як аргумент і повертає кожен аркуш як data.frame у названому списку.
library(XLConnect)
importWorksheets <- function(filename) {
workbook <- loadWorkbook(filename)
sheet_names <- getSheets(workbook)
names(sheet_names) <- sheet_names
sheet_list <- lapply(sheet_names, function(.sheet){
readWorksheet(object=workbook, .sheet)})
}
Таким чином, його можна було б назвати за допомогою:
importWorksheets('test.xls')
xlconnect
іreadxl
, пакетxlsx
дозволяє обробляти файли Excel уR
(всі аркуші або лише деякі)