Exporter à coup sûr du CSV

Dernière mise à jour le 18 novembre 2009 à 13:01 par marlalapocket
Publié par sebsauvage
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)
Meilleures réponses pour « Exporter à coup sûr du CSV » dans :
[Outlook 2003] Exportation et importation de données VoirIl est possible d'exporter toutes les données personnelles (contacts, e-mails, calendrier, etc...), à condition de le paramétrer à l'exportation (voir ci-dessous). Exportation ou sauvegarde Importation ou restauration A voir...
Excel - Convertir fichier(s) CSV / XLS VoirComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...
Exporter en PDF avec PDFCreator VoirExporter en PDF des documents avec PDFCreator Téléchargement Installation Utilisation L'exportation de documents vers le format universel PDF se fait grâce à une imprimante virtuelle. Pourquoi PDFCreator ? Il existe le classique...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
Fichier CSV VoirFormat CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...
Collection CommentÇaMarche.net