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 |