xlconnectjars writeworksheet r excel xlconnect

writeworksheet - Lea todas las hojas de trabajo en un libro de Excel en una lista R con data.frames



xlconnect download (9)

Entiendo que XLConnect se puede usar para leer una hoja de cálculo de Excel en R. Por ejemplo, esto leería la primera hoja de trabajo en un libro llamado test.xls en R.

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

Tengo un Excel Workbook con múltiples hojas de trabajo.

¿Cómo se pueden importar todas las hojas de trabajo en un libro en una lista en R donde cada elemento de la lista es un marco de datos para una hoja determinada, y donde el nombre de cada elemento corresponde al nombre de la hoja de cálculo en Excel?


Respuesta actualizada utilizando readxl (22 de junio de 2015)

Desde que se publicó esta pregunta, se readxl paquete readxl . Admite los formatos xls y xlsx . Es importante destacar que, a diferencia de otros paquetes de importación de excel, funciona en Windows, Mac y Linux sin requerir la instalación de software adicional.

Entonces, una función para importar todas las hojas en un libro de Excel sería:

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 }

Esto podría ser llamado con:

mysheets <- read_excel_allsheets("foo.xls")

Vieja respuesta

Sobre la base de la respuesta proporcionada por @mnel, aquí hay una función simple que toma un archivo Excel como argumento y devuelve cada hoja como un data.frame en una lista con nombre.

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)}) }

Por lo tanto, podría llamarse con:

importWorksheets(''test.xls'')


Dado que este es el hit número uno a la pregunta: Leer hoja múltiple excel para enumerar:

aquí está la solución openxlsx :

filename <-"myFilePath" sheets <- openxlsx::getSheetNames(filename) SheetList <- lapply(sheets,openxlsx::read.xlsx,xlsxFile=filename) names(SheetList) <- sheets




Me encontré con esta vieja pregunta y creo que el enfoque más fácil aún falta.

Puede usar rio para importar todas las hojas de Excel con solo una línea de código.

library(rio) data_list <- import_list("test.xls")

Si eres fanático de tidyverse , puedes importarlos fácilmente como tibbles agregando el argumento setclass a la llamada a la función.

data_list <- import_list("test.xls", setclass = "tbl")


Para leer varias hojas de un libro de trabajo, use el paquete readxl de la siguiente manera:

library(readxl) library(dplyr) final_dataFrame <- bind_row(path_to_workbook %>% excel_sheets() %>% set_names() %>% map(read_excel, path = path_to_workbook))

Aquí, bind_row (dplyr) colocará todas las filas de datos de todas las hojas en un marco de datos, y path_to_workbook es "dir / of / the / data / workbook".


Puede cargar el libro de trabajo y luego usar lapply , getSheets y readWorksheet y hacer algo como esto.

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)})


Tenga en cuenta que la mayoría de las funciones de XLConnect ya están vectorizadas. Esto significa que puede leer en todas las hojas de trabajo con una llamada de función sin tener que hacer una vectorización explícita:

require(XLConnect) wb <- loadWorkbook(system.file("demoFiles/mtcars.xlsx", package = "XLConnect")) lst = readWorksheet(wb, sheet = getSheets(wb))

Con XLConnect 0.2-0 lst ya será una lista con nombre.


excel.link hará el trabajo.

De hecho, me pareció más fácil de usar en comparación con XLConnect (no es que ninguno de los paquetes sea tan difícil de usar). La curva de aprendizaje para ambos fue de aproximadamente 5 minutos.

Como un aparte, puede encontrar fácilmente todos los paquetes R que mencionan la palabra "Excel" navegando a http://cran.r-project.org/web/packages/available_packages_by_name.html