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é.

J'espère que cet article vous aura plu, à bientôt sur le blog !


À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage de d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo par Isaac Smith sur Unsplash