Je sais que c'est une vieille question, mais le problème ne disparaîtra pas de sitôt. Les fichiers CSV sont faciles à générer à partir de la plupart des langages de programmation, plutôt petits, lisibles par l'homme avec un éditeur de texte brut et omniprésents.
Le problème n'est pas seulement avec les dates dans les champs de texte, mais tout ce qui est numérique est également converti du texte en nombres. Quelques exemples où cela pose problème:
- ZIP / codes postaux
- numéros de téléphone
- numéros d'identification du gouvernement
qui peut parfois commencer par un ou plusieurs zéros (0), qui sont jetés lors de la conversion en numérique. Ou la valeur contient des caractères qui peuvent être confondus avec des opérateurs mathématiques (comme dans les dates: /, -).
Deux cas auxquels je peux penser que la solution "prepending =", comme mentionné précédemment, pourrait ne pas être idéal est
- où le fichier peut être importé dans un programme autre que MS Excel (la fonction de fusion et publipostage de MS Word vient à l'esprit),
- où la lisibilité humaine peut être importante.
Mon hack pour contourner cela
Si l'on pré / ajoute un caractère non numérique et / ou non date dans la valeur, la valeur sera reconnue comme texte et non convertie. Un caractère non imprimable serait bien car il ne modifiera pas la valeur affichée. Cependant, l'ancien caractère d'espace simple (\ s, ASCII 32) ne fonctionne pas pour cela car il est coupé par Excel, puis la valeur est toujours convertie. Mais il existe divers autres caractères d'espace d'impression et de non-impression qui fonctionneront bien. Le plus simple est cependant d' ajouter (ajouter après) le caractère de tabulation simple (\ t, ASCII 9).
Avantages de cette approche:
- Disponible au clavier ou avec un code ASCII facile à retenir (9),
- Cela ne dérange pas l'importation,
- Normalement, ne dérange pas les résultats de la fusion et du publipostage (selon la disposition du modèle - mais normalement, cela ajoute simplement un grand espace à la fin d'une ligne). (Si c'est cependant un problème, regardez d'autres caractères, par exemple l'espace de largeur nulle (ZWSP, Unicode U + 200B)
- n'est pas un gros obstacle lors de la visualisation du CSV dans le Bloc-notes (etc.),
- et pourrait être supprimé par trouver / remplacer dans Excel (ou Bloc-notes, etc.).
- Vous n'avez pas besoin d' importer le CSV, mais vous pouvez simplement double-cliquer pour ouvrir le CSV dans Excel.
S'il y a une raison pour laquelle vous ne souhaitez pas utiliser l'onglet, recherchez dans une table Unicode autre chose appropriée.
Une autre option
pourrait être de générer des fichiers XML, pour lesquels un certain format est également accepté pour l'importation par les nouvelles versions de MS Excel, et qui permet beaucoup plus d'options similaires au format .XLS, mais je n'ai pas d'expérience avec cela.
Il existe donc différentes options. Selon vos besoins / application, l'un peut être meilleur qu'un autre.
Une addition
Il faut dire que les nouvelles versions (2013+) de MS Excel n'ouvrent plus le CSV au format tableur - un ralentissement de plus dans son flux de travail rendant Excel moins utile ... Au moins, des instructions existent pour le contourner. Voir par exemple ce Stackoverflow: comment afficher correctement les fichiers .csv dans Excel 2013?
.