Cập nhật câu trả lời bằng readxl (ngày 22 tháng 6 năm 2015)
Kể từ khi đăng câu hỏi này, readxl
gói đã được phát hành. Nó hỗ trợ cả hai xls
và xlsx
định dạng. Điều quan trọng, trái ngược với các gói nhập excel khác, nó hoạt động trên Windows, Mac và Linux mà không yêu cầu cài đặt thêm phần mềm.
Vì vậy, một hàm để nhập tất cả các trang tính trong sổ làm việc Excel sẽ là:
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
}
Điều này có thể được gọi bằng:
mysheets <- read_excel_allsheets("foo.xls")
Câu trả lời cũ
Dựa trên câu trả lời được cung cấp bởi @mnel, đây là một hàm đơn giản lấy tệp Excel làm đối số và trả về mỗi trang tính dưới dạng data.frame trong danh sách được đặt tên.
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)})
}
Do đó, nó có thể được gọi với:
importWorksheets('test.xls')
xlconnect
vàreadxl
, góixlsx
giấy phép để thao tác các file excel trongR
(tất cả các tờ hoặc chỉ một số)