InseeFrLab / utilitR

Source of the utilitR French R documentation
https://book.utilitr.org/
Other
72 stars 55 forks source link

readxl versus openxlsx #419

Open ericemc3 opened 2 years ago

ericemc3 commented 2 years ago

Cette affirmation pose la supériorité de openxlsx::read.xlsx sur readxl::read_excel :

Il est recommandé d’utiliser la fonction read_excel() du package readxl pour importer des fichiers xls. Cette fonction peut également importer des fichiers xlsx, mais elle est moins rapide que la fonction read.xlsx() du package openxlsx.

Cela ne correspond pas à mon ressenti. Avez-vous un exemple ?

Voici un test sur un tableau détaillé RP de 36 Mo accessible sur https://www.insee.fr/fr/statistiques/5395834?sommaire=5395894, readxl apparait deux fois plus rapide :

microbenchmark(
  read_excel = read_excel("data/xlsx/BTX_TD_FOR2_2018.xlsx"),
  read.xlsx = read.xlsx("data/xlsx/BTX_TD_FOR2_2018.xlsx"),
  times = 2
)

image

linogaliana commented 2 years ago

@CTassart et @oliviermeslin : c'est vous qui aviez fait le comparatif. Vous avez encore les tests de perf ?

ddotta commented 2 years ago

Il me semble aussi que readxl::read_excel est plus performant que openxlsx::read.xlsx Cette page fournit un bon exemple dont je reprends ici les résultats : Mais peut-être que {openxlsx} présente d'autres avantages comparativement à {readxl} image

ericemc3 commented 2 years ago

En effet, je trouve pour ma part openxlsxintéressant en écriture de fichiers xlsx, openxlsx ::write.xlsx présente de multiples options bien pratiques pour personnaliser ses exports.

py-b commented 2 years ago

Pour en revenir à la lecture, une différence importante entre les 2 fonctions n'est pas dans la sélection par plage pour readxl::read_excel contre la spécification des lignes et colonnes par openxlsx::read.xlsx ? Pas de hiérarchie selon moi, seulement des possibilités différentes selon la localisation des données dans les fichiers qu'on veut importer.

ddotta commented 2 years ago

En effet, je trouve pour ma part openxlsxintéressant en écriture de fichiers xlsx, openxlsx ::write.xlsx présente de multiples options bien pratiques pour personnaliser ses exports.

Oui je confirme dans mon équipe un collègue a écrit quelques fonctions d'export à partir d'openxlxs et c'est assez puissant en terme de choix de styles possibles (formats des colonnes/lignes/cellules, personnalisation des titres/notes de lecture/sources...).

Peut-être à signaler un jour dans un paragraphe ou fiche sur les exports ?

linogaliana commented 1 year ago

En effet, je trouve pour ma part openxlsx intéressant en écriture de fichiers xlsx, openxlsx ::write.xlsx présente de multiples options bien pratiques pour personnaliser ses exports.

Oui je confirme dans mon équipe un collègue a écrit quelques fonctions d'export à partir d'openxlxs et c'est assez puissant en terme de choix de styles possibles (formats des colonnes/lignes/cellules, personnalisation des titres/notes de lecture/sources...).

Peut-être à signaler un jour dans un paragraphe ou fiche sur les exports ?

Au vu du débat, j'ai l'impression que les éléments suivants semblent émerger

A cell range to read from, as described in cell-specification. Includes typical Excel ranges like "B3:D87", possibly including the sheet name like "Budget!B2:G14", and more. Interpreted strictly, even if the range forces the inclusion of leading or trailing empty rows or columns. Takes precedence over skip, n_max and sheet.

Ravi d'accepter une PR qui irait dans ce sens (promis plus rapidement que ma participation à ce débat)