6 votes

L'ouverture d'un fichier CSV dans Excel corrompt la colonne des numéros de téléphone

J'exporte les données de listview vers un fichier csv. Il y a une colonne, 'Numéro de contact'. Le type de données de cette colonne est un champ de 20 caractères de texte dans MS Access. En ouvrant ce csv avec Notepad, il montre la valeur réelle des données, 12345678901234567890. Mais en l'ouvrant avec MS Excel, il affiche 12345678901234500000. :O

Pourquoi les 5 derniers caractères sont transformés en zéro ? Dans Excel, je reformate cette colonne au format de catégorie 'Personnalisé' ou 'Nombre'. Après cela, elle affiche 12345678901234500000. Si je ne la reformate pas, elle affiche normalement 1.23457E+19.

3voto

Il suffit d'utiliser "=0123" dans le fichier CSV, guillemets inclus. Attention, le fait de réenregistrer ce fichier comme un autre CSV annulera l'effet de l'opération. =" ... " partie.

Il existe également une méthode HTML si vous souhaitez utiliser un simple tableau comme feuille de calcul, qui conservera probablement son état lorsqu'il sera réenregistré, à ceci près qu'il ne s'agira plus d'un CSV :

<TD style="mso-number-format:@;">0123</TD>

N'utilisez pas l'astuce du guillemet simple (') pour résoudre le problème de l'importation, car elle n'est applicable que lors de la modification des champs. alors que vous êtes déjà dans Excel. Autrement dit, si vous essayez d'importer un fichier CSV avec un champ '0123, vous vous retrouverez avec un guillemet simple dans votre champ de chaîne.

1voto

datatoo Points 3412

La réponse, comme cela a déjà été suggéré ici, est que la valeur doit être une chaîne de caractères.

Il s'agit seulement d'une tentative pour vous aider à comprendre pourquoi. Cela signifie qu'il sera également traité comme une chaîne de caractères dans Access, ce qui semble maintenant vous préoccuper. La meilleure façon de voir la différence et peut-être de comprendre ce qui est dit est de formater différentes cellules dans une feuille Excel.

Formatez-en un comme format général, un comme numéro et un comme texte. (Format>Cellules>Catégorie Nombre) Puis tapez un nombre de 20 caractères tel que 9999999999999999999999. Enregistrez le fichier au format csv et ouvrez-le dans le bloc-notes pour voir la différence. Faire précéder une entrée de ' indique simplement à Excel le format de la cellule d'une autre manière.

Vous mentionnez l'exportation de données de listview vers csv, vous devez donc contrôler les données de listview que vous souhaitez enregistrer en tant que texte et non en tant que numérique. Access n'aura jamais de problème avec cela, à moins que vous n'essayiez d'utiliser les valeurs comme des nombres, mais elles semblent être utilisées comme des nombres d'identification, pas comme des valeurs.

Quelle est la source des données du listview ? La gestion du format de cellule avant que les données n'entrent dans votre feuille devrait résoudre votre problème.

0voto

Menas Points 101

Il est peut-être trop tard, mais j'ai eu le même problème et la meilleure solution que j'ai trouvée a été d'utiliser des crochets. () ou des tirets - pour séparer le numéro de téléphone en plusieurs sections, par exemple l'indicatif du pays, l'indicatif régional et le numéro...

Le CSV ressemblerait à ceci :

... ,(1)123-123-1234, ...

Plutôt que des nombres décimaux purs comme :

... ,+11231231234, ...

J'ai essayé cela parce que c'est ce à quoi ressemblent les numéros de téléphone lorsqu'ils sont automatiquement formatés dans Excel.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X