XLCONNECT / R2WD / RCOM




                                     www.bluestone.fr
                       55 rue du Faubourg Montmartre – 75009 Paris
                                    +33 (0)1 53 25 02 10
                                   contact@bluestone.fr
BS TEMPLATE 20121030
XLConnect

R2wd

RCOM : l’outil universel pour Microsoft




                     EXPORTS DE R VERS OFFICE   05/04/2013   2
 Plusieurs packages coexistent :
     dataframe2xls
     xlsx
     XLConnect
     …


 XLConnect présente quelques avantages :
   Traite à la fois les fichiers xls et les fichiers xlsx
   Utilise des scripts en java, ce qui ne nécessite pas en général d’installation supplémentaire
   Le package continue d’être développé et il y a de plus en plus d’options




                                            EXPORTS DE R VERS OFFICE                         05/04/2013   3
Version longue
wb <- loadWorkbook(chemin, create =         Crée un lien avec un fichier excel et éventuellement crée le fichier
TRUE)


createSheet(wb, name = "Data")              Crée un onglet Data

writeWorksheet(wb, a, sheet = "Data")       Sauve les données de a dans l’onglet Data créé

saveWorkbook(wb)                            Sauve le fichier excel


                                        Version courte
writeWorksheetToFile(chemin, data a,        Remarques :
sheet = "Data")                                      Ne permet pas de créer le fichier ni l’onglet
                                                     Pas recommandé dans le cas d’exportations multiples dans un même
                                                      fichier, car R lance plusieurs scripts en Java destinés au même fichier excel
                                                      et ça finit par bloquer, peut-être pour des raisons de synchronisation



  Les fonctions « symétriques » sont … readWorksheet / readWorksheetFromFile

                                            EXPORTS DE R VERS OFFICE                                                   05/04/2013     4
Exportations de plusieurs tables simultanément
writeWorksheet(wb, list(a,b), sheet =        Colle les tables a et b dans les onglets Data1 et Data2
c("Data1","Data2"))




                                   Choix des cellules cibles

createSheet(wb, name = "Data2")              Colle la table a dans l’onglet Data2
writeWorksheet(wb, a, sheet =
"Data2",header=F,startCol=2,startRow=2
                                             Colle les donnée à partir de la deuxième ligne et de la deuxième
)                                             colonne
                                             N’écrit pas les noms de colonnes


                       Dupplication d’onglets / Suppression du contenu
cloneSheet(wb, sheet = "Data2", name =       Duplique l’onglet Data2
"Data3")

clearSheet(wb, sheet = "Data3")              Supprime le contenu de Data3




                                             EXPORTS DE R VERS OFFICE                                     05/04/2013   5
Possibilité de modifier des formats directement sous R
wb <-                                        Exemple 1 : on change la taille des cellules dans l’onglet Data2
loadWorkbook(paste(nomDossier,"/Result
ats.xlsx",sep=""), create = FALSE)
setRowHeight(wb, sheet = "Data2", row
= 2:11, height = 30)
setColumnWidth(wb, sheet = "Data2",
column = 2:11, width = 4000)
saveWorkbook(wb)

wb <-
                                             Exemple 2 : modification de la couleur de fond dans l’onglet Data2
loadWorkbook(paste(nomDossier,"/Result
ats.xlsx",sep=""), create = FALSE)
format1 <- createCellStyle(wb)
# On veut changer la couleur de fond
...
setFillPattern(format1, fill =
XLC$"FILL.SOLID_FOREGROUND")
# ... en rouge foncé
setFillForegroundColor(format1, color
= XLC$"COLOR.DARK_RED")
# on applique ici à la première ligne
setCellStyle(wb, sheet = "Data2", row
= 2, col = 2:11,                                                  C’est (excessivement) pénible
             cellstyle = format1)
saveWorkbook(wb)

                                             EXPORTS DE R VERS OFFICE                                      05/04/2013   6
Possibilité de ne pas écraser le format de la cellule d’arrivée
wb <- loadWorkbook(chemin, create =                     Garde le format de la cellule d’arrivée… pas très chic mais ça
FALSE)                                                   marche
setStyleAction(wb,XLC$"STYLE_ACTION.NO
NE")
writeWorksheet(wb, b, sheet =
"Data2",header=F,startCol=2,startRow=2
)
saveWorkbook(wb)



                  Possibilité d’appliquer des formats enregistrés dans le fichier excel
   Il faut d’abord créer les formats que l’on souhaite dans un fichier excel
   Ensuite, on peut partir de ce fichier excel en le dupliquant avant d’écrire dedans afin de disposer des « bons » formats
wb <- loadWorkbook(chemin, create =                     Récupère le format Format1 et l’applique à la cellule choisie
FALSE)
Format1 <- getCellStyle(wd, "Format
1")
setCellStyle(w,
sheet="Data2",row=1,col=1,cellstyle=Fo
rmat1)
saveWorkbook(wb)


                                                        EXPORTS DE R VERS OFFICE                                      05/04/2013   7
XLConnect

R2wd

RCOM : l’outil universel pour Microsoft




                     EXPORTS DE R VERS OFFICE   05/04/2013   8
 Ce package est en basé sur le package RCOM, qui lui-même utilise
  l’application statconnDCOM

 Pour installer statconnDCOM :
 1.   Utiliser l’instruction du package RCOM : installstatconnDCOM(id="rcom")
 2.   Télécharger depuis le site : http://rcom.univie.ac.at/


 L’intérêt de R2wd est que ce package rend l’utilisation de RCOM facile




                                     EXPORTS DE R VERS OFFICE                   05/04/2013   9
Ouverture de word et création d’un document
wdGet()                                      Ouverture de Word
wdNewDoc("chemin/Nouveau.doc")               Création du document Nouveau.doc
wdSave()                                     Enregistrement
wdQuit()                                     Fermeture de Word



                                       Ecriture de texte
wdTitle("Titre")                             Le format Titre du document word est utilisé
wdSection("Titre 1",newpage=TRUE)            Le format Titre1 du document word est utilisé
wdSubsection("Titre 2")                      Le format Titre2 du document word est utilisé
wdSubsubsection("Titre 3")                   Le format Titre3 du document word est utilisé
wdBody("Normal")                             Le format Normal du document word est utilisé



                                             EXPORTS DE R VERS OFFICE                         05/04/2013   10
Mélanger des valeur et du texte

wdTitle(paste("Résultats du",date)




                     Coller des bouts de code R ou des sorties de console

Verbatim("ceci est mon code")




             Faire des conversion d’unités (qu’est ce que ça fait dans ce package)

wdConvert(1,"in","pt")

wdConvert(1,"pt","in")                       Peut toujours servir…

wdConvert(1,"cm","pt")




                                             EXPORTS DE R VERS OFFICE                05/04/2013   11
Export d’un graphique simple



wdPlot(1:100,1:100 )




                         Possibilité de choisir la fonction graphique




wdPlot(1:100,1:100,fun=boxplot )




                                             EXPORTS DE R VERS OFFICE   05/04/2013   12
Export de base



wdTable(a)




             On peut utiliser la fonction format() pour un formatage rapide




wdTable(format(a))




                                         EXPORTS DE R VERS OFFICE             05/04/2013   13
Gestion des lignes



wdTable(format(a),hlines=c("bt","bt","
bt","bt","bt"))




                                      Gestion des colonnes




wdTable(format(a),
hlines=c("bt","bt","bt","bt","bt"),
align=c("c", "|","c","c","c"))




                                              EXPORTS DE R VERS OFFICE   05/04/2013   14
Taille des lignes et des polices



wdTable(format(a),padding=10,pointsize
=5)




                       Formats « automatiques » autoformat = 1/2/3




                                           EXPORTS DE R VERS OFFICE   05/04/2013   15
XLConnect

R2wd

RCOM : l’outil universel pour Microsoft




                     EXPORTS DE R VERS OFFICE   05/04/2013   16
Ouverture de Word et création d’un document
comApp<-comCreateObject("Word.Application")
                                                                          Instancie une nouvelle application Word
comSetProperty(comApp,"Visible",TRUE)
                                                                          Rend Word visible
comDoc<-
comInvoke(comGetProperty(comApp,"Documents"),"Add")                       Instancie un nouveau document dans Word


                                         Ecriture de texte
comApp[["Selection"]][["Text"]]<- "Ecrire du                              Pas très ergonomique
texte…"


                                        Créer un graphique

win.metafile()
plot(density(rnorm(10000,0,1)))
dev.off()
# Etape 4: insertion graphique dans le workbook
comSelection<-comApp[["Selection"]]
docImage<-comInvoke(comSelection,"Paste")



                                            EXPORTS DE R VERS OFFICE                                                 05/04/2013   17
Ouverture de Excel et création d’un document
comApp<-comCreateObject("Excel.Application")                               Instancie une nouvelle application Excel
comSetProperty(pptApp,"Visible",TRUE)                                      Rend Excel visible
comXls<-                                                                   Instancie un nouveau document dans Excel
comInvoke(comGetProperty(comApp,"Workbooks"),"Add")




                                              Ecriture

comSheet<-comGetProperty(comXls,"Worksheets",1)

comRange<-
comGetProperty(comSheet,"Range","A1","B4")

comSetProperty(comRange,"Value",cbind(c(11:14),c(15
:18)))




                                             EXPORTS DE R VERS OFFICE                                                  05/04/2013   18
Ouverture de PowerPoint et création d’un document
comApp<-comCreateObject("PowerPoint.Application")                       Instancie une nouvelle application PowerPoint
comSetProperty(comApp,"Visible",TRUE)                                   Rend PowerPoint visible
pptPresentation<-                                                       Instancie un nouveau document dans
comInvoke(pptApp[["Presentations"]],"Add",-1)
                                                                         PowerPoint
pptSlides<-comGetProperty(pptPresentation,"Slides")

                                           Ecriture

pptCurrSlide<-comInvoke(pptSlides,"Add",1,11)

pptShapes<-pptCurrSlide[["Shapes"]]

pptCurrShape[["TextFrame"]][["TextRange"]][["Text"]
]<- "Slide créée depuis R"




                                          EXPORTS DE R VERS OFFICE                                              05/04/2013   19

Exports de r vers office

  • 1.
    XLCONNECT / R2WD/ RCOM www.bluestone.fr 55 rue du Faubourg Montmartre – 75009 Paris +33 (0)1 53 25 02 10 contact@bluestone.fr BS TEMPLATE 20121030
  • 2.
    XLConnect R2wd RCOM : l’outiluniversel pour Microsoft EXPORTS DE R VERS OFFICE 05/04/2013 2
  • 3.
     Plusieurs packagescoexistent :  dataframe2xls  xlsx  XLConnect  …  XLConnect présente quelques avantages :  Traite à la fois les fichiers xls et les fichiers xlsx  Utilise des scripts en java, ce qui ne nécessite pas en général d’installation supplémentaire  Le package continue d’être développé et il y a de plus en plus d’options EXPORTS DE R VERS OFFICE 05/04/2013 3
  • 4.
    Version longue wb <-loadWorkbook(chemin, create =  Crée un lien avec un fichier excel et éventuellement crée le fichier TRUE) createSheet(wb, name = "Data")  Crée un onglet Data writeWorksheet(wb, a, sheet = "Data")  Sauve les données de a dans l’onglet Data créé saveWorkbook(wb)  Sauve le fichier excel Version courte writeWorksheetToFile(chemin, data a,  Remarques : sheet = "Data")  Ne permet pas de créer le fichier ni l’onglet  Pas recommandé dans le cas d’exportations multiples dans un même fichier, car R lance plusieurs scripts en Java destinés au même fichier excel et ça finit par bloquer, peut-être pour des raisons de synchronisation Les fonctions « symétriques » sont … readWorksheet / readWorksheetFromFile EXPORTS DE R VERS OFFICE 05/04/2013 4
  • 5.
    Exportations de plusieurstables simultanément writeWorksheet(wb, list(a,b), sheet =  Colle les tables a et b dans les onglets Data1 et Data2 c("Data1","Data2")) Choix des cellules cibles createSheet(wb, name = "Data2")  Colle la table a dans l’onglet Data2 writeWorksheet(wb, a, sheet = "Data2",header=F,startCol=2,startRow=2  Colle les donnée à partir de la deuxième ligne et de la deuxième ) colonne  N’écrit pas les noms de colonnes Dupplication d’onglets / Suppression du contenu cloneSheet(wb, sheet = "Data2", name =  Duplique l’onglet Data2 "Data3") clearSheet(wb, sheet = "Data3")  Supprime le contenu de Data3 EXPORTS DE R VERS OFFICE 05/04/2013 5
  • 6.
    Possibilité de modifierdes formats directement sous R wb <-  Exemple 1 : on change la taille des cellules dans l’onglet Data2 loadWorkbook(paste(nomDossier,"/Result ats.xlsx",sep=""), create = FALSE) setRowHeight(wb, sheet = "Data2", row = 2:11, height = 30) setColumnWidth(wb, sheet = "Data2", column = 2:11, width = 4000) saveWorkbook(wb) wb <-  Exemple 2 : modification de la couleur de fond dans l’onglet Data2 loadWorkbook(paste(nomDossier,"/Result ats.xlsx",sep=""), create = FALSE) format1 <- createCellStyle(wb) # On veut changer la couleur de fond ... setFillPattern(format1, fill = XLC$"FILL.SOLID_FOREGROUND") # ... en rouge foncé setFillForegroundColor(format1, color = XLC$"COLOR.DARK_RED") # on applique ici à la première ligne setCellStyle(wb, sheet = "Data2", row = 2, col = 2:11, C’est (excessivement) pénible cellstyle = format1) saveWorkbook(wb) EXPORTS DE R VERS OFFICE 05/04/2013 6
  • 7.
    Possibilité de nepas écraser le format de la cellule d’arrivée wb <- loadWorkbook(chemin, create =  Garde le format de la cellule d’arrivée… pas très chic mais ça FALSE) marche setStyleAction(wb,XLC$"STYLE_ACTION.NO NE") writeWorksheet(wb, b, sheet = "Data2",header=F,startCol=2,startRow=2 ) saveWorkbook(wb) Possibilité d’appliquer des formats enregistrés dans le fichier excel  Il faut d’abord créer les formats que l’on souhaite dans un fichier excel  Ensuite, on peut partir de ce fichier excel en le dupliquant avant d’écrire dedans afin de disposer des « bons » formats wb <- loadWorkbook(chemin, create =  Récupère le format Format1 et l’applique à la cellule choisie FALSE) Format1 <- getCellStyle(wd, "Format 1") setCellStyle(w, sheet="Data2",row=1,col=1,cellstyle=Fo rmat1) saveWorkbook(wb) EXPORTS DE R VERS OFFICE 05/04/2013 7
  • 8.
    XLConnect R2wd RCOM : l’outiluniversel pour Microsoft EXPORTS DE R VERS OFFICE 05/04/2013 8
  • 9.
     Ce packageest en basé sur le package RCOM, qui lui-même utilise l’application statconnDCOM  Pour installer statconnDCOM : 1. Utiliser l’instruction du package RCOM : installstatconnDCOM(id="rcom") 2. Télécharger depuis le site : http://rcom.univie.ac.at/  L’intérêt de R2wd est que ce package rend l’utilisation de RCOM facile EXPORTS DE R VERS OFFICE 05/04/2013 9
  • 10.
    Ouverture de wordet création d’un document wdGet()  Ouverture de Word wdNewDoc("chemin/Nouveau.doc")  Création du document Nouveau.doc wdSave()  Enregistrement wdQuit()  Fermeture de Word Ecriture de texte wdTitle("Titre")  Le format Titre du document word est utilisé wdSection("Titre 1",newpage=TRUE)  Le format Titre1 du document word est utilisé wdSubsection("Titre 2")  Le format Titre2 du document word est utilisé wdSubsubsection("Titre 3")  Le format Titre3 du document word est utilisé wdBody("Normal")  Le format Normal du document word est utilisé EXPORTS DE R VERS OFFICE 05/04/2013 10
  • 11.
    Mélanger des valeuret du texte wdTitle(paste("Résultats du",date) Coller des bouts de code R ou des sorties de console Verbatim("ceci est mon code") Faire des conversion d’unités (qu’est ce que ça fait dans ce package) wdConvert(1,"in","pt") wdConvert(1,"pt","in")  Peut toujours servir… wdConvert(1,"cm","pt") EXPORTS DE R VERS OFFICE 05/04/2013 11
  • 12.
    Export d’un graphiquesimple wdPlot(1:100,1:100 ) Possibilité de choisir la fonction graphique wdPlot(1:100,1:100,fun=boxplot ) EXPORTS DE R VERS OFFICE 05/04/2013 12
  • 13.
    Export de base wdTable(a) On peut utiliser la fonction format() pour un formatage rapide wdTable(format(a)) EXPORTS DE R VERS OFFICE 05/04/2013 13
  • 14.
    Gestion des lignes wdTable(format(a),hlines=c("bt","bt"," bt","bt","bt")) Gestion des colonnes wdTable(format(a), hlines=c("bt","bt","bt","bt","bt"), align=c("c", "|","c","c","c")) EXPORTS DE R VERS OFFICE 05/04/2013 14
  • 15.
    Taille des ligneset des polices wdTable(format(a),padding=10,pointsize =5) Formats « automatiques » autoformat = 1/2/3 EXPORTS DE R VERS OFFICE 05/04/2013 15
  • 16.
    XLConnect R2wd RCOM : l’outiluniversel pour Microsoft EXPORTS DE R VERS OFFICE 05/04/2013 16
  • 17.
    Ouverture de Wordet création d’un document comApp<-comCreateObject("Word.Application")  Instancie une nouvelle application Word comSetProperty(comApp,"Visible",TRUE)  Rend Word visible comDoc<- comInvoke(comGetProperty(comApp,"Documents"),"Add")  Instancie un nouveau document dans Word Ecriture de texte comApp[["Selection"]][["Text"]]<- "Ecrire du  Pas très ergonomique texte…" Créer un graphique win.metafile() plot(density(rnorm(10000,0,1))) dev.off() # Etape 4: insertion graphique dans le workbook comSelection<-comApp[["Selection"]] docImage<-comInvoke(comSelection,"Paste") EXPORTS DE R VERS OFFICE 05/04/2013 17
  • 18.
    Ouverture de Excelet création d’un document comApp<-comCreateObject("Excel.Application")  Instancie une nouvelle application Excel comSetProperty(pptApp,"Visible",TRUE)  Rend Excel visible comXls<-  Instancie un nouveau document dans Excel comInvoke(comGetProperty(comApp,"Workbooks"),"Add") Ecriture comSheet<-comGetProperty(comXls,"Worksheets",1) comRange<- comGetProperty(comSheet,"Range","A1","B4") comSetProperty(comRange,"Value",cbind(c(11:14),c(15 :18))) EXPORTS DE R VERS OFFICE 05/04/2013 18
  • 19.
    Ouverture de PowerPointet création d’un document comApp<-comCreateObject("PowerPoint.Application")  Instancie une nouvelle application PowerPoint comSetProperty(comApp,"Visible",TRUE)  Rend PowerPoint visible pptPresentation<-  Instancie un nouveau document dans comInvoke(pptApp[["Presentations"]],"Add",-1) PowerPoint pptSlides<-comGetProperty(pptPresentation,"Slides") Ecriture pptCurrSlide<-comInvoke(pptSlides,"Add",1,11) pptShapes<-pptCurrSlide[["Shapes"]] pptCurrShape[["TextFrame"]][["TextRange"]][["Text"] ]<- "Slide créée depuis R" EXPORTS DE R VERS OFFICE 05/04/2013 19