r2excel : Créer et formater facilement un document Excel avec le logiciel R
- Plusieurs solutions existent pour ?crire et lire un fichier Excel avec R
- Les 3 packages ? connaitre pour gagner du temps
- Le package r2excel
- Installation et chargement
- Les fonctions disponibles
- Cr?er votre premier fichier Excel
- Ajouter des titres
- Ajouter un paragraph de textes
- Ajouter un lien
- Ajouter une table de donn?es de type data.frame
- Ajouter un graphe
- Lire un fichier Excel
- Ecrire un fichier Excel
- Un rapport Excel complet avec le logiciel R
- Infos
Plusieurs solutions existent pour ?crire et lire un fichier Excel avec R
Les fichiers Excel sont utilis?s par des millions de personnes pour sauvegarder et analyser leurs donn?es.
Diff?rents packages R et solutions pour importer des donn?es d?Excel vers R et d?en exporter de R vers Excel :
- La connection ODBC: Pour Windows seulement et n?cessite un driver ODBC pour Excel
- Le package gdata: Existe pour Windows, Mac et Linux mais n?cessite l?installation de librairies du langage Perl
- Le package xlsReadWrite : Pour Windows seulement mais il n?y a plus de version mise ? jour
- Le logiciel RExcel : Un outil performant permettant d?ex?cuter directement du code R ? partir d?Excel. Cependant, il ne peut ?tre utilis? que sur Windows
- Le package XLConnect : XLConnect est une solution java-d?pendante qui est compatible Windows, Mac et Linux. Il est un peu lent lorsque le jeu de donn?es est important
- Le package xlsx: Ceci est mon package favoris pour lire, ?crire et formater des fichiers Excel ? partir du Logiciel R. C?est une solution java-d?pendante et elle peut ?tre utilis?e pour lire et ?crire ? la fois les formats de fichiers xls et xlsx.
Comme indiqu? ci-dessus, il existe plusieurs m?thodes pour connecter R et Excel, mais beaucoup d?entre elles sont :
- difficiles ? utiliser
- ou compatibles seulement avec Windows
- ou n?cessitent des drivers additionnels
- ou marchent seulement avec des versions anciennes d?Excel (.xls mais pas .xlsx)
Les 3 packages ? connaitre pour gagner du temps
Les trois packages que vous devez connaitre pour importer et exporter des donn?es ? partir/vers Excel sont xlsx, XLConnect et r2excel.
Lire ou ?crire des fichiers Excel est devenu une tache facile maintenant gr?ce aux packages xlsx et XLConnect.
Formater un fichier Excel est aussi possible. Cependant, ceci n?cessite du ?Hard coding?. C?est la raison pour laquelle, j?ai impl?ment? le package r2excel contenant des fonctions pour rapidement et facilement importer, ?crire et personnaliser des fichiers Excel.
Le package r2excel
Installation et chargement
Pour l?installation, utiliser le code R suivant :
install.packages("devtools")
devtools::install_github("kassambara/r2excel")
Charger le package avec le code ci-dessous :
library(r2excel)
Les fonctions disponibles
La liste des fonctions disponibles dans le package r2excel est :
- xlsx.addHeader pour ajouter des titres
- xlsx.addPlot pour ajouter des graphiques
- xlsx.addParagraph pour ajouter des paragraphes de textes
- xlsx.addTable pour ajouter des data.frames.
- xlsx.addLineBreak pour ajouter un saut de ligne.
- xlsx.addHyperlink pour ajouter un hyper lien.
- xlsx.readFile pour lire un fichier Excel.
- xlsx.writeFile pour ?crire une table de donn?es dans un fichier Excel.
- xlsx.writeMultipleData pour exporter rapidement plusieurs tables de donn?es dans le m?me classeur Excel.
- xlsx.openFile pour ouvrir et voir un fichier Excel.
Ces fonctions sont d?crites dans les sections suivantes
Cr?er votre premier fichier Excel
library("r2excel")
# Cr?er un classeur Excel.
# Les formats .xls et .xlsx peuvent ?tre utilis?s
filename <- "r2excel-example1.xlsx"
wb <- createWorkbook(type="xlsx")
# Cr?er une feuille dan le classeur Excel pour contenir les donn?es
sheet <- createSheet(wb, sheetName = "example1")
# Ajouter un titre
xlsx.addHeader(wb, sheet, value="Add table",level=1,
color="black", underline=1)
xlsx.addLineBreak(sheet, 1)
# Ajouter un paragraph : Autheur
author=paste("Author : Alboukadel KASSAMBARA. \n",
"@:alboukadel.kassambara@gmail.com.",
"\n Website : http://ww.sthda.com", sep="")
xlsx.addParagraph(wb, sheet,value=author, isItalic=TRUE, colSpan=5,
rowSpan=4, fontColor="darkgray", fontSize=14)
xlsx.addLineBreak(sheet, 3)
# Ajouter une table : data.frame
xlsx.addTable(wb, sheet, head(iris), startCol=2)
xlsx.addLineBreak(sheet, 2)
# Enregistrer le classeur dans un fichier
saveWorkbook(wb, filename)
xlsx.openFile(filename)# Voir le fichier
L?image du fichier Excel cr?? par le code ci-dessus est :
Ajouter des titres
Pour ajouter un titre, la fonction xlsx.addHeader() peut ?tre utilis?e. Un format simplifi? est :
xlsx.addHeader(wb, sheet, value="Header", level=1,
color="#FFFFFF", underline=c(0,1,2))
- wb : classeur Excel(workbook en anglais)
- sheet : la feuille Excel
- value : le text ? ajouter comme titre
- level : le niveau du titre; valeurs possibles 1 ? 6 (pour titre1, titre2)
- color : couleur ? utiliser pour le titre
- underline : un nombre indiquant s?il faut souligner ou pas le titre. Valeurs possibles : 0 (par d?faut, texte non soulign?), 1 (texte soulign? avec un trait), 2 (texte soulign? avec 2 traits)
Exemples :
# cr?er le classeur et la feuille
wb <- createWorkbook(type="xlsx")
sheet <- xlsx::createSheet(wb, sheetName = "example1")
#Titre
#**************************************
# Titre de niveau 1
xlsx.addHeader(wb, sheet, value="Header 1",level=1, color="black")
# Titre de niveau 2
xlsx.addHeader(wb, sheet, value="Header 2",level=2, color="black")
# Titre de niveau 3
xlsx.addHeader(wb, sheet, value="Header 3",level=3, color="black")
# Titre de niveau 4
xlsx.addHeader(wb, sheet, value="Header 4",level=4, color="black")
# Titre de niveau 5
xlsx.addHeader(wb, sheet, value="Header 5",level=5, color="black")
# Titre de niveau 56
xlsx.addHeader(wb, sheet, value="Header 6",level=6, color="black")
# Ecrire le classeur Excel dans un fichier
saveWorkbook(wb, "examples_add_header.xlsx")
xlsx.openFile("examples_add_header.xlsx")# view the file
L?image du fichier Excel cr?? par le code ci-dessus est :
Ajouter un paragraph de textes
La fonction xlsx.addParagraph() peut ?tre utilis?e. Un format simplifi? est :
xlsx.addParagraph(wb, sheet, value, fontColor="#FFFFFF",
fontSize=12, isBold=FALSE, isItalic=FALSE,
colSpan=10, rowSpan=5)
- wb : classeur Excel
- sheet : la feuille Excel
- value : le texte ? ?crire
- fontColor : couleur du texte
- fontSize : taille du texte
- isBold : si TRUE, le texte est ?crit en gras
- isItalic : si TRUE, le texte est ?crit en italic
- colSpan : nombre de colonnes ? fusionner (correspond ? la largeur du paragraphe)
- rowSpan : nombre de lignes ? fusionner (hauteur du paragraphe)
Exemples :
# Cr?er un classeur et une feuille Excel
wb <- createWorkbook(type="xlsx")
sheet <- createSheet(wb, sheetName = "example1")
# Ajouter un paragraphe
xlsx.addHeader(wb, sheet, " Add paragraph", level=2, underline=1)
xlsx.addLineBreak(sheet, 2)
paragraph="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged."
xlsx.addParagraph(wb, sheet, paragraph, fontSize=14, isItalic=TRUE,
fontColor="darkred", colSpan=10, rowSpan=10)
# Enregistrer le classeur Excel dans un fichier
saveWorkbook(wb, "examples_add_paragraph.xlsx")
xlsx.openFile("examples_add_paragraph.xlsx")# view the file
Ajouter un lien
La fonction xlsx.addHyperlink() peut ?tre utilis?e. Un format simplifi? est :
xlsx.addHyperlink(wb,sheet, address, friendlyName)
- wb : le classeur Excel
- sheet : la feuille Excel
- address : l?adresse url
- friendlyName : texte indiquant le nom du lien
Exemples :
# Classeur et feuille Excel
wb <- createWorkbook(type="xlsx")
sheet <- createSheet(wb, sheetName = "example1")
# Ajouter un lien
#+++++++++++++++++++++++++++++
xlsx.addHeader(wb, sheet, " Add Hyperlink", level=2, underline=1)
xlsx.addLineBreak(sheet, 1)
xlsx.addHyperlink(wb, sheet, "https://www.sthda.com", "Click-me!", fontSize=12)
xlsx.addLineBreak(sheet, 2)
# Enregistrer le classeur dans un fichier
saveWorkbook(wb, "examples_add_hyperlink.xlsx")
xlsx.openFile("examples_add_hyperlink.xlsx")# Voir le fichier
Ajouter une table de donn?es de type data.frame
La fonction xlsx.addTable peut ?tre utilis?e. Un format simplifi? est :
xlsx.addTable(wb, sheet, data, col.names=TRUE, row.names=TRUE,
fontColor="#FFFFFF", fontSize=12, rowFill=c("white", "white"))
- wb : classeur Excel
- sheet : feuille Excel
- data : une data.frame
- col.names, row.names : une valeur logique indiquant si le nom des colonnes/lignes doit ?tre ?crit dans le fichier. La valeur par d?faut est TRUE
- font.color : couleur du texte
- font.size : taille du texte
- rowFill : un vecteur contenant deux couleurs correspondant aux couleurs des lignes impaires et paires. Valeur par d?faut : c(?white?, ?white?)
# Cr?er un classeur et une feuille Excel
wb <- createWorkbook(type="xlsx")
sheet <- createSheet(wb, sheetName = "example1")
# ajouter la table iris avec les param?tres par d?faut
data(iris)
xlsx.addHeader(wb, sheet,
value="Add iris table using default settings")
xlsx.addLineBreak(sheet, 1)
xlsx.addTable(wb, sheet, head(iris))
xlsx.addLineBreak(sheet, 2)
# Personnaliser la table
xlsx.addHeader(wb, sheet, value="Customized table")
xlsx.addLineBreak(sheet, 1)
xlsx.addTable(wb, sheet, data= head(iris),
fontColor="darkblue", fontSize=14,
rowFill=c("white", "lightblue")
)
xlsx.addLineBreak(sheet, 2)
# Enregistrer le classeur dans un fichier
saveWorkbook(wb, "examples_add_table.xlsx")
xlsx.openFile("examples_add_table.xlsx")# voir le fichier
Ajouter un graphe
La fonction xlsx.addPlot() peut ?tre utilis?e. Un format simplifi? :
xlsx.addPlot(wb, sheet, plotFunction,
width = 480, height = 480, ...)
- wb : classeur Excel
- sheet : Feuille Excel
- plotFunction : la fonction R pour cr?er le graphe
- width, height : taille et hauteur du graphique
- ? : d?autres arguments ? passer ? la fonction png()
Exemples :
# Cr?er un classeur et une feuille Excel
wb <- createWorkbook(type="xlsx")
sheet <- createSheet(wb, sheetName = "example1")
# Box plot basic
data(ToothGrowth)
xlsx.addHeader(wb, sheet, "Basic box plot")
xlsx.addLineBreak(sheet, 1)
plotFunction<-function(){boxplot(len ~ dose, data = ToothGrowth, col = 1:3)}
xlsx.addPlot(wb, sheet, plotFunction())
# ggplot2
# vous devez installer le package ggplot2
library("ggplot2")
xlsx.addHeader(wb, sheet, "ggplot2")
xlsx.addLineBreak(sheet, 1)
plotFunction<-function(){
p<-qplot(mpg, wt, data=mtcars)
print(p)
}
xlsx.addPlot(wb, sheet, plotFunction())
# Enregistrer le fichier Excel.
saveWorkbook(wb, "examples_add_plot.xlsx")
xlsx.openFile("examples_add_plot.xlsx")# voir le fichier
Lire un fichier Excel
La fonction xlsx.readFile() peut ?tre utilis?e. Un format simplifi? est :
xlsx.readFile(file, sheetIndex = 1, header = TRUE)
- file : le chemin du fichier ? lire
- sheetIndex : le num?ro de la feuille ? lire dans le classeur Excel
- header : valeur logique. Si TRUE, la premi?re ligne est prise comme noms des variables
Exemples :
file <- system.file("tests", "test_import.xlsx", package = "xlsx")
res <- xlsx.readFile(file, 1) # Lire la pr?mi?re feuille
head(res)
## Population Income Illiteracy Life.Exp Murder HS.Grad Frost Area
## 1 3615 3624 2.1 69.05 15.1 41.3 20 50708
## 2 365 6315 1.5 69.31 11.3 66.7 152 566432
## 3 2212 4530 1.8 70.55 7.8 58.1 15 113417
## 4 2110 3378 1.9 70.66 10.1 39.9 65 51945
## 5 21198 5114 1.1 71.71 10.3 62.6 20 156361
## 6 2541 4884 0.7 72.06 6.8 63.9 166 103766
Ecrire un fichier Excel
La fonction xlsx.writeFile peut ?tre utilis?e. Un format simplifi? est :
xlsx.writeFile(data, file, sheetName = "Sheet1",
col.names = TRUE, row.names = TRUE, append = FALSE)
- data : une data.frame ? ?crire dans le classeur
- file : chemin du fichier r?sultat
- sheetName : texte indiquant le nom de la feuille Excel
- col.names, row.names : une valeur logique indiquant si le nom des colonnes/lignes doit ?tre ?crit dans le fichier
- append : une valeur logique indiquant si les donn?es doivent ?tre ajout?e dans un fichier d?j? existant.
Exemples :
xlsx.writeFile(USArrests, file="myworkbook.xlsx",
sheetName="USA Arrests")
xlsx.openFile("myworkbook.xlsx")# Voir le fichier
Utiliser l?argument append = TRUE pour ajouter plusieurs data.frames dans le m?me classeur Excel :
# Ecrire la pr?miere table dans un nouveau classeur
xlsx.writeFile(USArrests, file="myworkbook.xlsx",
sheetName="USA-ARRESTS", append=FALSE)
# Ajouter une deuxi?me table
xlsx.writeFile(mtcars, file="myworkbook.xlsx",
sheetName="MTCARS", append=TRUE)
# Ajouter une troisi?me table
xlsx.writeFile(Titanic, file="myworkbook.xlsx",
sheetName="TITANIC", append=TRUE)
xlsx.openFile("myworkbook.xlsx")# voir le fichier
La m?thode ci-dessus est tr?s r?p?titive. Vous pouvez utiliser la fonction xlsx.writeMultipleData() pour ajouter plusieurs data sets dans le m?me classeur en une seule ligne de code.
xlsx.writeMultipleData("myworkbook.xlsx",
mtcars, Titanic, AirPassengers, state.x77)
xlsx.openFile("myworkbook.xlsx")# view the file
La fonction xlsx.writeMultipleData marche pour les donn?es de types data frames (mtcars), matrices (state.x77), s?ries temporelles (AirPassengers) et tables (Titanic).
Un rapport Excel complet avec le logiciel R
Le code R suivant peut ?tre utilis? :
# Cr?er un classeur Excel.
# Les formats .xls et .xlsx peut ?tre utilis?s
filename<-"r2excel-example.xlsx"
wb <- createWorkbook(type="xlsx")
# Cr?er une feuille dans le classeur
sheet <- xlsx::createSheet(wb, sheetName = "example1")
# Ajouter un titre
#+++++++++++++++++++++++++++++++
# Titre et sous-titre de la feuille Excel
xlsx.addHeader(wb, sheet, value="Excel file written with r2excel packages",
level=1, color="darkblue", underline=2)
xlsx.addLineBreak(sheet, 2)
# Ajouter un paragraphe : Autheur
author=paste("Author : Alboukadel KASSAMBARA. \n",
"@:alboukadel.kassambara@gmail.com.",
"\n Website : http://ww.sthda.com", sep="")
xlsx.addParagraph(wb, sheet,value=author, isItalic=TRUE, colSpan=5,
rowSpan=4, fontColor="darkgray", fontSize=14)
xlsx.addLineBreak(sheet, 3)
# Ajouter une table
#+++++++++++++++++++++++++++++
# ajouter la table iris avec les param?tres par d?faut
data(iris)
xlsx.addHeader(wb, sheet, value="Add iris table using default settings", level=2)
xlsx.addLineBreak(sheet, 1)
xlsx.addTable(wb, sheet, head(iris), startCol=2)
xlsx.addLineBreak(sheet, 2)
# Table personnalis?e
xlsx.addHeader(wb, sheet, value="Customized table", level=2)
xlsx.addLineBreak(sheet, 1)
xlsx.addTable(wb, sheet, data= head(iris),
fontColor="darkblue", fontSize=14,
rowFill=c("white", "lightblue")
)
xlsx.addLineBreak(sheet, 2)
# Ajouter un paragraphe
#+++++++++++++++++++++++++++++
xlsx.addHeader(wb, sheet, "Add paragraph", level=2)
xlsx.addLineBreak(sheet, 2)
paragraph="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged."
xlsx.addParagraph(wb, sheet, paragraph, fontSize=14, isItalic=TRUE,
fontColor="darkred", backGroundColor="gray")
xlsx.addLineBreak(sheet, 2)
# Ajouter un lien
#+++++++++++++++++++++++++++++
xlsx.addHeader(wb, sheet, " Add Hyperlink", level=2)
xlsx.addLineBreak(sheet, 1)
xlsx.addHyperlink(wb, sheet, "https://www.sthda.com", "Click-me!!", fontSize=12)
xlsx.addLineBreak(sheet, 2)
# Ajouter un box plot
#+++++++++++++++++++++++++++++
data(ToothGrowth)
xlsx.addHeader(wb, sheet, " Add Plot", level=2)
xlsx.addLineBreak(sheet, 1)
plotFunction<-function(){boxplot(len ~ dose, data = ToothGrowth, col = 1:3)}
xlsx.addPlot(wb, sheet, plotFunction())
# Enregistrez le classeur Excel
xlsx::saveWorkbook(wb, filename)
xlsx.openFile(filename) # open file
Infos
Cette analyse a ?t? r?alis?e avec R (ver. 3.1.0).
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!
Recommended for You!
Click to follow us on Facebook:
Comment this article by clicking on "Discussion" button (top-right position of this page)