CSV arrêtant Excel de la modification des valeurs de colonne

1

Voici le deal. Nous approchons des limites, je pense à ce que vous pouvez faire avec CSV, mais je me demande si quelqu'un a une solution.

Nous avons un fichier CSV d'une taille de 357 Mo. Les téléchargements sont corrects et ne prennent pas trop de temps avec une bonne connexion.

Cependant, la plupart des clients ouvrent ce fichier dans Excel. Et il y a plusieurs problèmes:

  • Un champ 00400 montrera comme 40 (zéros non supprimés)
  • Une valeur de 0.04088100 deviendra 4.08E-2 (ou quelque chose comme ça)
  • Les dates et les heures changent

Le mauvais correctif: Nous avons essayé d'ajouter un = personnage avant la "0040" - cela fonctionne pour les petits fichiers mais pas pour les gros fichiers - Excel ne peut pas les traiter toutes comme des formules, trop de mémoire et le fichier ne s'ouvre jamais

Le bon correctif: Nous avons ajouté un caractère ASCII 28 (un File Stop ou FS, voir http://www.theasciicode.com.ar/extended-ascii-code/uppercase-slashed-zero-empty-set-ascii-code-157.html ) Tous les champs avec cette valeur "cachée" sont affichés correctement, sauf qu'ils sont justifiés à gauche (car ils traitent un texte)

Le seul problème: Malheureusement, la bonne solution a un problème. Lorsque vous utilisez le formatage pour justifier à droite les champs avec le CHR (28) à gauche, il y a un petit espace à droite, que vous ne pouvez pas supprimer car il supprime plutôt le caractère correct.

Un correctif possible: Nous avons fait quelques expériences et nous avons constaté que l'ajout de CHR (157) à la gauche des valeurs de champ abusées par Excel l'arrêtait également ET ET justifiaient à droite. toutefois Je me sens très bizarre de faire cela et je me demande s’il ya des inconvénients.

Cela peut sembler une question obscure; J'ai fait beaucoup de recherches à ce sujet. Est-ce qu'il y a une meilleure approche? La configuration requise ne permettra pas au fichier d'être sauvegardé - en tant que fichier .xlxs, etc.

Oliver Williams
la source
1
Si vos utilisateurs modifient et réenregistrent le fichier, ils n’ajouteront probablement pas de caractère devant des chiffres, ce qui le perturberait. Je suggère soit de faire un .txt fichier (qui présentera l’assistant d’importation de texte lorsqu’il sera ouvert dans Excel et pourra désigner la colonne en tant que texte); ou les faire importer et non pas ouvrir le fichier csv (qui fera la même chose).
Ron Rosenfeld

Réponses:

0

Au risque de paraître défaitiste, je chercherais une solution alternative. Voici pourquoi:

Le problème le plus effrayant est A value of 0.04088100 will become 4.08E-2 parce que Excel est changer cette valeur ; Si vous enregistrez le fichier, vous perdrez en précision et les derniers chiffres, quel que soit le nombre de chiffres, seront définis sur 0. Je tente régulièrement de faire correspondre des chiffres longs de 20 ou 30 chiffres qu'Excel refuse.

En outre, l'insertion de caractères invisibles ne causera des maux de tête que lorsque les gens trébuchent dessus; si quelqu'un supprime accidentellement le personnage invisible, il ne pourra pas entrer à nouveau dans les zéros et ne saura pas pourquoi. Cela posera également problème si ces lignes sont importées quelque part; bien que vous sachiez comment Notepad & amp; Excel va réagir, et si ce sont des caractères de contrôle dans une autre application?

Bonne chance.

Silas B
la source