Lors d'un projet professionnel, j'avais un besoin récurrent d'ouvrir des fichiers CSV et de vérifier certaines informations rapidement. Or, les ouvrir dans Excel, établir les filtres ou tris, c'est un peu pénible à force... Je me suis donc amusé à créer un petit module NodeJS qui converti un fichier CSV en tableau HTML.

Nommé htmlify-csv, le code source de ce module est bien entendu disponible sur mon GitHub.

La conversion du CSV se fait en ligne de commande. Le principe est simple : il suffit de spécifier le chemin du fichier CSV à transformer et le script parse le contenu du CSV pour en faire un simple tableau HTML, mise en valeur avec le plugin jQuery tablesorter (ajout de filtres et tris par colonne).

Pour gérer les options de la ligne de commande, j'utilise Caporal.js que j'avais déjà présenté dans un précédent article.

Le parsage du CSV a été confié à babyparse.

Installer htmlify-csv et le tester

Pour installer et tester ce module, commencez par cloner le dépôt GitHub :

git clone git@github.com:shevabam/htmlify-csv.git
cd htmlify-csv

Puis installez les dépendances avec :

npm install

Ensuite, pour l'utilisation, ce n'est pas bien compliqué. Le script dispose d'une seule commande convert qui peut accueillir plusieurs arguments.

Pour convertir le fichier exemple.csv en tableau HTML :

node htmlify-csv convert exemple.csv

Le fichier HTML généré sera présent dans le dossier datas.

Cependant, l'utilisation préconisée est d'utiliser le paramètre --show qui permet d'ouvrir le fichier HTML directement dans votre navigateur Web :

node htmlify-csv convert exemple.csv --delimiter=";" --show

Vous pouvez aussi changer le chemin de sortie avec l'option `--output`` :

node htmlify-csv convert "sample/exemple.csv" --delimiter=";" --output="datas/example.html" --show

Voici les options disponibles (également visibles via node htmlify-csv --help :

Option Description Défaut Exemple
--delimiter Délimiteur CSV , --delimiter=";"
--output Chemin et nom du fichier de sortie datas/output.html --output="file.html"
--show Ouvre le fichier HTML dans le navigateur Web false
--port Numéro du port du serveur node 8090 --port=1337