Importer et exporter des fichiers .csv en Javascript avec Papa Parse
Parfois, j'ai l'impression qu'être développeur, c'est simplement créer des modules d'import/export de données...
Article publié le 29/10/2020, dernière mise à jour le 22/09/2023
Lorsque l'on est développeur web, le premier réflexe lorsque l'on a des données à importer est d'utiliser le format JSON, géré nativement en Javascript.
Malheureusement, éditer un tel fichier n'est pas toujours accessible pour la majorité des gens, et même lorsque la personne fait l'effort de bien vouloir le faire, il y a de grandes chances pour se retrouver avec des erreurs de syntaxes lors de l'importation.
C'est pourquoi les fichiers .csv sont pratiques : ils sont éditables directement dans Excel, et importable très facilement en Javascript grâce à la librairie Papa Parse.
Voici le lien vers la documentation de la librairie : https://www.papaparse.com/
Comment ça marche ?
Tout d'abord, il faut ajouter la librairie aux dépendances du projet en utilisant un packet manager (type NPM ou Yarn) :
npm install papaparse
Pour information, les exemples ci-dessous tournent sous NodeJS, mais la librairie fonctionne aussi très bien dans le navigateur avec un input type="file" !
Importer un fichier .csv
Avant d'essayer d'importer un fichier .csv, vérifiez que le fichier est valide et qu'il est bien présent au chemin indiqué dans le code, puis copiez-collez le code ci-dessous dans un fichier javascript et exécutez le !
// import.js
const Papa = require("papaparse"),
fs = require("fs");
try {
let csv = fs.readFileSync("./source.csv", "utf-8")
let csv_json = Papa.parse(csv, {encoding: "utf-8"})
console.log(csv_json.data);
} catch(e){
console.error(e);
}
Vous devriez voir apparaitre dans la console le contenu de votre fichier csv sous la forme d'un tableau JSON, où chaque élément contient lui-même un tableau de toutes les données d'une seule ligne du fichier csv d'origine.
Si la première ligne de votre fichier csv contient les en-têtes, il ne vous reste plus qu'à reconstituer vos objets JSON en vous basant sur la première ligne du tableau !
Exporter un fichier .csv
L'export de données JSON vers un fichier CSV se fait aussi facilement que l'import, il suffit de quelques lignes de code comme l'exemple ci-dessous.
// export.js
const Papa = require("papaparse"),
fs = require("fs");
let json_data = [
{firstname: "James", lastname: "Donnie", email:"jamesdonnie@example.com"},
{firstname: "Thomas", lastname: "Crown", email:"thomascrown@example.com"},
]
try {
var csv_data = Papa.unparse(json_data);
fs.writeFile("./export.csv", csv_data, { flag: 'w' }, function(){
console.log(csv_data);
});
} catch(e){
console.error(e);
}
Attention, la première ligne du fichier csv exporté (les en-têtes) correspondra aux clés du premier objet du tableau, si certaines clés sont présentes dans les objets suivants mais pas dans le premier, elles n'apparaitront pas dans le fichier exporté.
Aucun commentaire pour l'instant