INTRODUCCION AL PAQUETE XLSX

El paquete xlsx es un paquete (programa) muy potente usado por el Lenguaje R, para leer, escribir y dar formato a archivos de Excel. Es una solución basada en Java y está disponible para Windows, Mac y Linux. Esta versión trabaja para las versiones de Excel 97, 2000, XP, 2003 y 2007.Los formatos de Excel que usa este paquete son (xls y xlsx).

Para empezar a usar el paquete xlsx, primero deberás de instalar el paquete usando el programa RStudio, para ello se ejecuta la siguiente instrucción:

Después de instalar el paquete xlsx, podrás usar todas las funciones disponibles, para ello trataremos de explicar cada una de las principales funciones usadas por xlsx. Para especificar el directorio de trabajo para R pueda manipular los archivos de Excel, por ejemplo para especificar la unidad c: deberá de ejecutar la siguiente instrucción en R: setwd(path.expand(“c:") )

1. Leer archivo Excel

Para leer el contenido de hojas de MS Excel podrás usar las funciones read.xlsx() y read.xlsx2(), el contenido de cada hoja se mostrará en un data.frame. La diferencia entre ambas funciones es: Read.xlsx(): Preserva los tipos de datos contenidos en la hoja de Excel. Read.xlsx2(): Se usa para leer hojas de Excel con mucha información. Figura 2: Lectura de archivo xlsx

2. Escribir en Archivo de Excel

Las funciones write.xlsx() y write.xlsx2(), se usan para exportar datos del lenguaje R a una hoja de trabajo de Ms Excel. La forma de llamar estas funciones son: write.xlsx(x, file, sheetName=“Sheet1”, col.names=TRUE, row.names=TRUE, append=FALSE) write.xlsx2(x, file, sheetName=“Sheet1”, col.names=TRUE, row.names=TRUE, append=FALSE) Los parámetros que usa la función es: . x: Bloque de datos a escribir en el libro de Excel. . file: Nombre del archivo . sheetName : Nombre de la hoja. . col.names, row.names : Especifica si los nombre de las columnas y filas se escribirán en el archivo. . append: Especifica si el bloque de datos se agregara a un archive existente.

Figura 3. Escribir en un archivo xls

Se escribe en un nuevo archivo de Excel el data.frame(bloque de datos) leído en la figura anterior.

Figura 4. Contenido del archivo de Excel

Para insertar múltiples hojas de Excel en un mismo libro de trabajo deberá de usar el siguiente ejemplo en R:

Figura 5. Insertar múltiples hojas en libro de Excel

  1. Formato y Estilo de Celdas en Excel El paquete xlsx también cuenta con la funcionalidad de poder definir formato a cada uno de los reportes (hojas de Excel). Para ello debemos hacer los siguientes pasos:
  2. Crear un libro de trabajo
  3. Definir estilo a celdas
  4. Escribir una tabla de datos en una hija de Excel con estilo.
  5. Guardar el archivo
  6. Ver Resultado del archivo

Para este ejemplo deberá de copiar y pegar el siguiente código en RStudio y ejecutarlo: ###Crear un nuevo libro de trabajo, con extension xlsx wb<-createWorkbook(type=“xlsx”)

Definir estilos para las celdas

TITLE_STYLE <- CellStyle(wb)+ Font(wb, heightInPoints=16, color=“blue”, isBold=TRUE, underline=1) SUB_TITLE_STYLE <- CellStyle(wb) + Font(wb, heightInPoints=14, isItalic=TRUE, isBold=FALSE)

Estilo para nombre de filas y columnas

TABLE_ROWNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) TABLE_COLNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) + Alignment(wrapText=TRUE, horizontal=“ALIGN_CENTER”) + Border(color=“black”, position=c(“TOP”, “BOTTOM”), pen=c(“BORDER_THIN”, “BORDER_THICK”))

Crear nueva hoja en libro de trabajo

sheet <- createSheet(wb, sheetName = “US State Facts”)

  • sheet : sheet object to contain the title
  • rowIndex : numeric value indicating the row to contain the title
  • title : the text to use as title
  • titleStyle : style object to use for title xlsx.addTitle<-function(sheet, rowIndex, title, titleStyle){ rows <-createRow(sheet,rowIndex=rowIndex) sheetTitle <-createCell(rows, colIndex=1) setCellValue(sheetTitle[[1,1]], title) setCellStyle(sheetTitle[[1,1]], titleStyle)

Agregar Titulo

xlsx.addTitle(sheet, rowIndex=1, title=“US State Facts”, titleStyle = TITLE_STYLE)

Agregar Subtitulo

xlsx.addTitle(sheet, rowIndex=2, title=“Data sets related to the 50 states of USA.”, titleStyle = SUB_TITLE_STYLE) head(state.x77)

Agregar Tabla

addDataFrame(state.x77, sheet, startRow=3, startColumn=1, colnamesStyle = TABLE_COLNAMES_STYLE, rownamesStyle = TABLE_ROWNAMES_STYLE) ### Change column width setColumnWidth(sheet, colIndex=c(1:ncol(state.x77)), colWidth=11)

Crear un gráfico

png(“boxplot.png”, height=800, width=800, res=250, pointsize=8) boxplot(count ~ spray, data = InsectSprays, col = “blue”) dev.off()

Crear una nueva hoja que contenga el grafico

sheet <-createSheet(wb, sheetName = “boxplot”) # Add a title to the sheet xlsx.addTitle(sheet, rowIndex=1, title=“Box plot using InsectSprays data”, titleStyle = TITLE_STYLE)

Agregar el grafico creado anterior mente

addPicture(“boxplot.png”, sheet, scale = 1, startRow = 4, startColumn = 1) ### Remove the plot from the disk res<-file.remove(“boxplot.png”)

Guardar el libro de trabajo

saveWorkbook(wb, “r-xlsx-report-example.xlsx”)

A continuación se muestra el resultado del script ejecutado en Rstudio

Figura 6. Tabla con formato de celdas creada por el paquete xlsx()

Figura 7. Grafico creado por el paquete xlsx()