Posez votre question »

Exporter à coup sûr du CSV

Juillet 2015

Exporter des données au format CSV n'est pas si trivial qu'il n'y paraît. Dès que vos données contiennent des virgules ou des guillemets, tout semble partir en vrille.

Il y a une astuce.

Voici comment procéder pour exporter à coup sûr vos données en CSV:
  • Doubler tout séparateur de chaîne trouvé dans la cellule ( ga"bu"zo ---> ga""bu""zo )
  • Quoter systématiquement le contenu de chaque cellule ( toto ----> "toto" )
  • Puis ajouter les cellules entre elles en séparant par une virgule. ( "toto","titi","tata" )
  • Puis ajouter les lignes entre elles en séparant par \r\n


Et voilà !

Tout sera exporté correctement, même si vos cellules contiennent des virgules, des espaces, des guillemets ou même des retours à la ligne.

Exemple


Voici un fichier CSV complexe:

"colonne A","colonne B","colonne C"
"Il a dit ""coucou !"" hier.","Hé, Je contiens une virgule !","125"
"Attention:","Je contient
un retour à la ligne.","777"


Ce qui donne dans Excel:

Notes

  • Note 1 : CSV signifie Comma-Separated Value. Le séparateur standard est donc la virgule (comma). Certaines versions d'Excel utilisent le point-virgule (semicolon) comme séparateur. Il faudra donc renommer le .csv en .txt, puis l'ouvrir avec Excel et préciser (dans le wizard d'importation) la virgule (comma) comme séparateur.
  • Note 2 : Vous ne contrôlez pas la façon dont Excel va interpréter le contenu de chaque cellule. Par défaut, chaque cellule sera importée avec le type "General". Par exemple, tout numéro de téléphone comme "+33-123456" sera interprété comme une addition par Excel (qui calculera -123423). (Oui je sais, il est très con, Excel)
  • Note 3 : Selon le paramétrage régional de Windows, le séparateur de nombre sera la virgule ou le point. C'est à vous de formater les nombres en fonction de la culture de vos utilisateurs. (Donc: Pensez à prévoir dans les pages web une option pour permettre à l'utilisateur de choisir le séparateur décimal.)
  • Note 4 : Attention au signe égal en début de cellule: Excel essaiera d'interpréter ce qui suit dans la cellule comme une formule.


Exemple:
"","12"
"","34"
"Total:","=B1+B2"


Comme vous pouvez le voir, le format CSV pose divers problèmes (aucun contrôle sur la manière dont le contenu des cellules est interprété, aucun formattage (couleurs, format de nombre, etc..))
On peut palier à ces problèmes avec une autre astuce: Exportez des fichiers html (contenant des styles CSS spéciaux) et renommez ces fichiers html en .xls:
Excel saura l'ouvrir sans problème, et prendra en compte le format des cellules (type, couleur, etc.)
Voir (en anglais)

Pour une lecture illimitée hors ligne, vous avez la possibilité de télécharger gratuitement cet article au format PDF :
Exporter-a-coup-sur-du-csv.pdf

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

A voir également

Dans la même catégorie

Publié par sebsauvage. - Dernière mise à jour par christelle.b
Ce document intitulé «  Exporter à coup sûr du CSV  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.