exports de r vers office
TRANSCRIPT
www.bluestone.fr 55 rue du Faubourg Montmartre – 75009 Paris
+33 (0)1 53 25 02 10 [email protected]
BS TEMPLATE 20121030
XLCONNECT / R2WD / RCOM
XLConnect
R2wd
RCOM : l’outil universel pour Microsoft
05/04/2013 EXPORTS DE R VERS OFFICE 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
05/04/2013 EXPORTS DE R VERS OFFICE 3
Crée un lien avec un fichier excel et éventuellement crée le fichier
Crée un onglet Data
Sauve les données de a dans l’onglet Data créé
Sauve le fichier excel
05/04/2013 EXPORTS DE R VERS OFFICE 4
wb <- loadWorkbook(chemin, create =
TRUE)
createSheet(wb, name = "Data")
writeWorksheet(wb, a, sheet = "Data")
saveWorkbook(wb)
Version longue
Version courte
Remarques :
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
writeWorksheetToFile(chemin, data a,
sheet = "Data")
Les fonctions « symétriques » sont … readWorksheet / readWorksheetFromFile
Colle les tables a et b dans les onglets Data1 et Data2
05/04/2013 EXPORTS DE R VERS OFFICE 5
writeWorksheet(wb, list(a,b), sheet =
c("Data1","Data2"))
Exportations de plusieurs tables simultanément
Choix des cellules cibles
Colle la table a dans l’onglet Data2
Colle les donnée à partir de la deuxième ligne et de la deuxième colonne
N’écrit pas les noms de colonnes
createSheet(wb, name = "Data2")
writeWorksheet(wb, a, sheet =
"Data2",header=F,startCol=2,startRow=2
)
Dupplication d’onglets / Suppression du contenu
cloneSheet(wb, sheet = "Data2", name =
"Data3")
clearSheet(wb, sheet = "Data3")
Duplique l’onglet Data2
Supprime le contenu de Data3
Exemple 1 : on change la taille des cellules dans l’onglet Data2
Exemple 2 : modification de la couleur de fond dans l’onglet Data2
05/04/2013 EXPORTS DE R VERS OFFICE 6
wb <-
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)
Possibilité de modifier des formats directement sous R
wb <-
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,
cellstyle = format1)
saveWorkbook(wb)
C’est (excessivement) pénible
05/04/2013 EXPORTS DE R VERS OFFICE 7
Possibilité de ne pas écraser le format de la cellule d’arrivée
Garde le format de la cellule d’arrivée… pas très chic mais ça marche
wb <- loadWorkbook(chemin, create =
FALSE)
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 =
FALSE)
Format1 <- getCellStyle(wd, "Format
1")
setCellStyle(w,
sheet="Data2",row=1,col=1,cellstyle=Fo
rmat1)
saveWorkbook(wb)
Récupère le format Format1 et l’applique à la cellule choisie
XLConnect
R2wd
RCOM : l’outil universel pour Microsoft
05/04/2013 EXPORTS DE R VERS OFFICE 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
05/04/2013 EXPORTS DE R VERS OFFICE 9
Ouverture de Word
Création du document Nouveau.doc
Enregistrement
Fermeture de Word
05/04/2013 EXPORTS DE R VERS OFFICE 10
wdGet()
wdNewDoc("chemin/Nouveau.doc")
wdSave()
wdQuit()
Ouverture de word et création d’un document
Ecriture de texte
Le format Titre du document word est utilisé
Le format Titre1 du document word est utilisé
Le format Titre2 du document word est utilisé
Le format Titre3 du document word est utilisé
Le format Normal du document word est utilisé
wdTitle("Titre")
wdSection("Titre 1",newpage=TRUE)
wdSubsection("Titre 2")
wdSubsubsection("Titre 3")
wdBody("Normal")
05/04/2013 EXPORTS DE R VERS OFFICE 11
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")
wdConvert(1,"cm","pt")
Peut toujours servir…
05/04/2013 EXPORTS DE R VERS OFFICE 12
Export d’un graphique simple
wdPlot(1:100,1:100 )
Possibilité de choisir la fonction graphique
wdPlot(1:100,1:100,fun=boxplot )
05/04/2013 EXPORTS DE R VERS OFFICE 13
Export de base
wdTable(a)
On peut utiliser la fonction format() pour un formatage rapide
wdTable(format(a))
05/04/2013 EXPORTS DE R VERS OFFICE 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"))
05/04/2013 EXPORTS DE R VERS OFFICE 15
Taille des lignes et des polices
wdTable(format(a),padding=10,pointsize
=5)
Formats « automatiques » autoformat = 1/2/3
XLConnect
R2wd
RCOM : l’outil universel pour Microsoft
05/04/2013 EXPORTS DE R VERS OFFICE 16
Instancie une nouvelle application Word
Rend Word visible
Instancie un nouveau document dans Word
05/04/2013 EXPORTS DE R VERS OFFICE 17
comApp<-comCreateObject("Word.Application")
comSetProperty(comApp,"Visible",TRUE)
comDoc<-
comInvoke(comGetProperty(comApp,"Documents"),"Add")
Ouverture de Word et création d’un document
Ecriture de texte
comApp[["Selection"]][["Text"]]<- "Ecrire du
texte…"
Pas très ergonomique
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")
Instancie une nouvelle application Excel
Rend Excel visible
Instancie un nouveau document dans Excel
05/04/2013 EXPORTS DE R VERS OFFICE 18
comApp<-comCreateObject("Excel.Application")
comSetProperty(pptApp,"Visible",TRUE)
comXls<-
comInvoke(comGetProperty(comApp,"Workbooks"),"Add")
Ouverture de Excel et création d’un document
Ecriture
comSheet<-comGetProperty(comXls,"Worksheets",1)
comRange<-
comGetProperty(comSheet,"Range","A1","B4")
comSetProperty(comRange,"Value",cbind(c(11:14),c(15
:18)))
Instancie une nouvelle application PowerPoint
Rend PowerPoint visible
Instancie un nouveau document dans PowerPoint
05/04/2013 EXPORTS DE R VERS OFFICE 19
comApp<-comCreateObject("PowerPoint.Application")
comSetProperty(comApp,"Visible",TRUE)
pptPresentation<-
comInvoke(pptApp[["Presentations"]],"Add",-1)
pptSlides<-comGetProperty(pptPresentation,"Slides")
Ouverture de PowerPoint et création d’un document
Ecriture
pptCurrSlide<-comInvoke(pptSlides,"Add",1,11)
pptShapes<-pptCurrSlide[["Shapes"]]
pptCurrShape[["TextFrame"]][["TextRange"]][["Text"]
]<- "Slide créée depuis R"