export dataframe vers Excel

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nathalie Brenac
Messages : 11
Enregistré le : 13 Avr 2017, 07:07

export dataframe vers Excel

Messagepar Nathalie Brenac » 07 Juil 2017, 09:37

Bonjour,

j'ai une base de 39100 lignes et 38 colonnes que je voudrais exporter sous Excel. La base s'appelle Nouvelle_aquitaine3

j'ai d'abord essayer avec
xlsx

Code : Tout sélectionner

write.xlsx2(Nouvelle_aquitaine3, file="Etat_lieux_NV.xlsx", sheetName="All2", col.names=TRUE, append=FALSE, showNA = FALSE)

mais j'ai le message d'erreur suivant
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "newInstance", .jfindClass(class), :
java.lang.OutOfMemoryError: Java heap space


Ensuite j'ai essayé avec XLConnect

Code : Tout sélectionner

fichierExcel<-loadWorkbook("Etat_lieux_NA.xlsx",create = TRUE)
createSheet(fichierExcel, name = "All")
writeWorksheet(fichierExcel, Nouvelle_aquitaine3, sheet="All", header = TRUE,startRow = 1, startCol = 1)
saveWorkbook(fichier)


mais à la ligne writeWorksheet j'ai le message suivant
Error: NoSuchMethodError (Java): org.apache.poi.ss.usermodel.Cell.setCellType(Lorg/apache/poi/ss/usermodel/CellType;)V

donc pour finir j'ai essayer avec RODBC

Code : Tout sélectionner

fichierExcel <- "Etat_lieux_NA.xls"
channel <- odbcConnectExcel(xls.file = fichierExcel,readOnly=FALSE)
sqlSave(channel, fichierExcel, tablename = "All")
odbcClose(channel)


mais j'ai le message suivant dès le première ligne:
Warning messages:
1: In odbcDriverConnect(con, tabQuote = c("[", "]"), ...) :
[RODBC] ERROR: state IM003, code 160, message Le pilote spécifié n'a pas été chargé en raison de l'erreur système 126: Le module spécifié est introuvable. (Microsoft Excel Driver (*.xls), C:\Windows\system32\ODBCJT~1.DLL|odbcjt32.dll).
2: In odbcDriverConnect(con, tabQuote = c("[", "]"), ...) :
ODBC connection failed

Je ne comprends pas trop les messages d'erreur, pourriez-vous m'aider.
Merci
Bonne journée
Nathalie
Bonne journée
Nathalie

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: export dataframe vers Excel

Messagepar Gabriel Terraz » 07 Juil 2017, 09:41

Salut,
Peut-être que je me trompe car j'utilise peu excel, ou alors pour de petits documents mais un tableau de 39000 lignes ça me parait un peu lourd à manier !

Nathalie Brenac
Messages : 11
Enregistré le : 13 Avr 2017, 07:07

Re: export dataframe vers Excel

Messagepar Nathalie Brenac » 07 Juil 2017, 09:50

La taille maximum pour une feuille Excel 2010 est de 1 048 576 lignes et 16 384 colonnes.
Mais peut-être que pour le passege de R à Excel, le fait d'avoir 39 000 lignes pose problème.
Bonne journée
Nathalie

Pascal PLUVINET
Messages : 70
Enregistré le : 15 Sep 2010, 06:04

Re: export dataframe vers Excel

Messagepar Pascal PLUVINET » 07 Juil 2017, 11:17

Bonjour,
peut-être essayer de placer cette ligne pour augmenter la mémoire avant l'export ?

Code : Tout sélectionner

options( java.parameters = "-Xmx1g" )


D'autre part avez-vous asseyer d'exporter de la même manière un dataframe plus petit (de 1000 lignes par exemple ? )

Bon courage
Pascal PLUVINET
Ingénieur d'études - Géomaticien

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: export dataframe vers Excel

Messagepar Mickael Canouil » 07 Juil 2017, 12:33

Bonjour,

l'option proposer par Pascal peut en effet résoudre ce problème à la condition d'allouer suffisamment de mémoire à JAVA.
Pour information, le "1g" correspond à 1 Go et peut être augmenté ou réduit avec par exemple "500m".

Sinon pour les grosses matrices, il peut être préférable d'exporter en csv, d'autant plus qu'un fichier csv s'ouvre de façon native dans excel.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Pascal PLUVINET
Messages : 70
Enregistré le : 15 Sep 2010, 06:04

Re: export dataframe vers Excel

Messagepar Pascal PLUVINET » 07 Juil 2017, 12:58

Effectivement, la fonction write.csv2 permet d'exporter un dateframe en CSV directement ouvrable par Excel.
Je n'exporte en Excel que si je veux mettre en forme un tableau (mettre en couleur des cellules par exemple) ou bien si je veux faire un export dans un seul et même fichier avec plusieurs onglet ou bien encore si je veux faire un export dans un template en xlsx.
Pascal PLUVINET

Ingénieur d'études - Géomaticien

Nathalie Brenac
Messages : 11
Enregistré le : 13 Avr 2017, 07:07

Re: export dataframe vers Excel

Messagepar Nathalie Brenac » 10 Juil 2017, 09:13

Bonjour,
merci pour vos réponses.

Je n'e voulais pas exporté en csv car j'ai une variable ID dont la taille est de 19 nombres. Elle doit être en texte dans Excel.
Avec un export CSV, tout les nombres de cette variable se terminent par 0000, je perds donc l'information.
A part ce point, l'export csv fonctionne parfaitement.
En ce qui concerne l'augmentation de mémoire après l'export, j'ai tester avec différents Go, mais cela ne change rien.

Pour le moment, je vais donc exporter en csv.
Merci,
Bonne journée.
Bonne journée
Nathalie

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: export dataframe vers Excel

Messagepar Mickael Canouil » 11 Juil 2017, 09:35

Bonjour,

il existe plusieurs façon de contourner ce problème de formatage.
Une façon de faire est de convertir la colonne "ID" en type caractère (as.character) et de conserver les guillemets (quote=TRUE) lors de l'exportation.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Nathalie Brenac
Messages : 11
Enregistré le : 13 Avr 2017, 07:07

Re: export dataframe vers Excel

Messagepar Nathalie Brenac » 18 Juil 2017, 10:22

Bonjour,

voici la solution que j'ai trouvée pour pouvoir avoir ma variable ID au bon format.
j'exporte mon fichier Rdate en un fichier texte et quand je l'ouvre sous Excel, je sélectionne ma variable ID_Jeune et je la mets au format texte.

Code : Tout sélectionner

write.table(Nouvelle_aquitaine3, file="myfile.txt", sep=";", dec=",", row.names=FALSE)


Merci pour vos conseils.
Bonne journée
Nathalie

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Re: export dataframe vers Excel

Messagepar Stéphane Laurent » 10 Aoû 2017, 09:50

Pour écrire un fichier xlsx, le package openxlsx est très bon.

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Re: export dataframe vers Excel

Messagepar Stéphane Laurent » 17 Sep 2017, 14:43

Et il y a un nouveau né : writexl. Plus basique mais plus rapide que openxlsx.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité