2012-06-27 29 views
17

Tengo un marco de datos en R que desea escribir en excel (o csv) y en un buen formato (por ejemplo, con un borde, título para la tabla, no a partir de la celda A1).Escribir desde R en plantilla en Excel conservando el formato

Por el momento utilizo la función write.table para escribir mis dataframes en un archivo csv, y luego copio y pego mis datos en un documento en excel donde tengo mis tablas listas para el formato de plantilla.

Esto no es un problema importante cuando solo se trata de un marco de datos, pero ahora quiero hacerlo para varios marcos de datos y tenerlos en varias pestañas en Excel.

¿Existe alguna manera de copiar automáticamente mis marcos de datos a celdas específicas en una hoja de cálculo Excel existente con todo el formato establecido correctamente?

+1

Los archivos CSV son de solo texto. No puede incluir ningún formato. Puede usar [R (D) COM] (http://cran.r-project.org/contrib/extra/dcom/) para escribir y formatear archivos de Excel de R. –

+1

A manera de explicación, voté pregunta porque "es posible" se responde trivialmente con Google. Una simple búsqueda lo habría llevado a los paquetes ** XLConnect ** y ** xlsx **, que pueden leer/escribir en archivos de Excel. – joran

+2

@joran La pregunta contiene una parte importante: mantener el formato de la plantilla original. Ve a intentarlo ... –

Respuesta

16

Como dijo Joran, usted tiene el paquete XLConnect. Lea el documentation o el vignette de ese paquete con cuidado para saber exactamente lo que es posible.

Usando XLConnect normalmente sobrescribir los estilos de celda a menos que establezca la acción al estilo de ser "ninguno" usando

setStyleAction(wb,XLC$"STYLE_ACTION.NONE") 

Para establecer que en el camino correcto, un ejemplo trivial:

require(XLConnect) 
wb <- loadWorkbook("test.xlsx", create=TRUE) 
setStyleAction(wb,XLC$"STYLE_ACTION.NONE") 

Data <- data.frame(
    a = 1:10, 
    b = letters[1:10] 
) 

writeWorksheet(wb,Data,"aSheet",startRow=1,startCol=1,header=TRUE) 

saveWorkbook(wb) 

antes

enter image description here

Después

enter image description here


EDIT: Como se ha señalado por Dirk Eddelbuettel, puede hacer lo mismo con el paquete xlsx. Yo personalmente uso XLConnect, ya que puede manejar tanto xls como xlsx, y parecía mucho más estable que cualquiera de los paquetes anteriores que utilicé para manipular archivos EXCEL. Todavía no he usado el paquete xlsx. Puedes echar un vistazo al CRAN page on Data Import/Export para saber qué hay disponible.

+2

FWIW el paquete "xslx" también lo hace. –

+0

Gracias joris, muy apreciado! – user1165199

+0

@DirkEddelbuettel Gracias por el recordatorio. –

Cuestiones relacionadas