Exports de r vers office

19
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

Transcript of Exports de r vers office

Page 1: Exports de r vers office

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

Page 2: Exports de r vers office

XLConnect

R2wd

RCOM : l’outil universel pour Microsoft

05/04/2013 EXPORTS DE R VERS OFFICE 2

Page 3: Exports de r vers office

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

Page 4: Exports de r vers office

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

Page 5: Exports de r vers office

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

Page 6: Exports de r vers office

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

Page 7: Exports de r vers office

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

Page 8: Exports de r vers office

XLConnect

R2wd

RCOM : l’outil universel pour Microsoft

05/04/2013 EXPORTS DE R VERS OFFICE 8

Page 9: Exports de r vers office

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

Page 10: Exports de r vers office

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

Page 11: Exports de r vers office

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…

Page 12: Exports de r vers office

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 )

Page 13: Exports de r vers office

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

Page 14: Exports de r vers office

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

Page 15: Exports de r vers office

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

Page 16: Exports de r vers office

XLConnect

R2wd

RCOM : l’outil universel pour Microsoft

05/04/2013 EXPORTS DE R VERS OFFICE 16

Page 17: Exports de r vers office

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

Page 18: Exports de r vers office

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

Page 19: Exports de r vers office

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"