Création de csv
Posté : 04 janv. 2007, 15:04
Bonjour,
J'suis en train de créer un site et j'aimerai pouvoir générer un fichier csv afin que les données récoltées par le formulaire puissent être importées dans un fichier excel.
1. Pour un fichier csv "en normes" il faudrait que chaque donnée soit encadrée par "...". Ceci n'est pas possible car fwrite nécessite que toutes les données soit comprises dans "...". Ceci n'est cependant pas très grave, puisque oo a pu lire comme même.
2. Plus grave, le séparateur utilisé est ;. Ceci pose problème lorsqu'une donnée contient un é, è, à etc qui se traduit dans mon fichier par é &eagrave; ou &aagrave;. Ainsi, un prénom comme Jéremi va être reporté Jéremi dans le fichier csv. Excel ou oo va alors considéré que Jéremi est au fait deux champs (jé et remi) et remi prendra donc la place de la valeur suivante, créant un déplacement de toutes les valeurs et foutre le bordel dans le tableau.
Donc --> peut-on faire en sorte que les caractères avec des aigus ou graves soit reportés "juste" dans le fichier csv. En d'autre termes, que Jéremi soit écrit Jéremi dans le fichier csv et non Jéremi?
J'espère avoir été compris.
Merci.
J'suis en train de créer un site et j'aimerai pouvoir générer un fichier csv afin que les données récoltées par le formulaire puissent être importées dans un fichier excel.
$datedujour = date('d/m/y-H:i:s');
$filename="../test.csv";
$fl=fopen($filename,"a+");
fwrite($fl,"$datedujour;$vtitle;$vfirst_name;$vlast_name;[...]$vlunch_veg\n\r");
fclose($fl);
Sans surprise, ce petit code fonctionne à merveille. Seulement deux petits problèmes pointent leur nez lorsqu'on le test à font: 1. Pour un fichier csv "en normes" il faudrait que chaque donnée soit encadrée par "...". Ceci n'est pas possible car fwrite nécessite que toutes les données soit comprises dans "...". Ceci n'est cependant pas très grave, puisque oo a pu lire comme même.
2. Plus grave, le séparateur utilisé est ;. Ceci pose problème lorsqu'une donnée contient un é, è, à etc qui se traduit dans mon fichier par é &eagrave; ou &aagrave;. Ainsi, un prénom comme Jéremi va être reporté Jéremi dans le fichier csv. Excel ou oo va alors considéré que Jéremi est au fait deux champs (jé et remi) et remi prendra donc la place de la valeur suivante, créant un déplacement de toutes les valeurs et foutre le bordel dans le tableau.
Donc --> peut-on faire en sorte que les caractères avec des aigus ou graves soit reportés "juste" dans le fichier csv. En d'autre termes, que Jéremi soit écrit Jéremi dans le fichier csv et non Jéremi?
J'espère avoir été compris.
Merci.