Comment puis-je obtenir Excel pour importer un fichier CSV avec des virgules dans certains des champs de contenu?

13

Comment obtenir Excel pour importer mon fichier CSV ?

Fichier

J'ai un fichier prétendant être CSV. Il contient 10 champs, tous entourés de guillemets doubles (oui, même les dates et les nombres.) 2 ou 3 de ces champs contiennent des virgules . Mais les données de ces champs sont également entourées de guillemets.

Problème

Lorsque j'essaie d'ouvrir ce fichier, Excel ignore complètement les guillemets et suppose qu'ils font partie des données.

Il divise donc les champs contenant des virgules en plusieurs colonnes.

C'est mauvais, du moins pour moi.

Exemples de données

"20051", "", "30 septembre 2009 02:53:23", "SOMETEXT", "", "5000", "2000000", "2008 - 99999 - -99999, 2008 - unk - unk", "191 - SOMETEXT - SOMETEXT, 192 - SOMETEXT - SOMETEXT, 193 - SOMETEXT - SOMETEXT, 194 - SOMETEXT - SOMETEXT, 195 - SOMETEXT - SOMETEXT, 196 - SOMETEXT - SOMETEXT "," 45 - SOMETEXT - SOMETEXT, 1162 - SOMETEXT - SOMETEXT - SOMETEXT - SOMETEXT, 141 - SOMETEXT - SOMETEXT "
"20052", "SOMETEXT", "2009 Sep 08 07:56:50", "SOMETEXT", "", "50000", "5000000", "2007 - 99999 - 99999", "146 - SOMETEXT - SOMETEXT, 145 - SOMETEXT - SOMETEXT, 147 - SOMETEXT - SOMETEXT, 148 - SOMETEXT - SOMETEXT "," 103 - SOMETEXT - SOMETEXT, 1131 - SOMETEXT - SOMETEXT "

Qu'est-ce que j'ai essayé?

J'ai utilisé la fonction d'importation pour spécifier des délimiteurs et autres, mais cela ne semble pas aider.

J'ai essayé de basculer "Délimiteur de texte" d'une citation double vers "{aucun}" et vice-versa. Cela semble affecter uniquement la première colonne. Ce serait raisonnable s'il était possible de cliquer sur les autres colonnes et d'appliquer ce paramètre à chacune. Mais ce n'est pas le cas, et il semble que cela soit destiné à fonctionner sur plusieurs colonnes.

Que puis-je essayer d'autre?

Rory Becker
la source
1
Quelle version d'Excel? Et est-il entièrement corrigé?
harrymc
J'ai vu cela en 2002 et 2007. Je ne suis pas sûr de 2007, mais je suis presque sûr que 2002 était complètement à jour
Rory Becker
Pouvez-vous fournir un lien vers le CSV? Ou une version réduite qui illustre le problème?
Josh Comley
Ajout de données d'exemple ci
Rory Becker

Réponses:

13

Je viens d'essayer un test rapide qui reproduit votre problème.

J'ai créé un CSV 1 ligne dans Word (qui utilise des guillemets intelligents) comme test.csv "123", "4,5,6" et il s'est ouvert dans Excel comme vous l'avez décrit.

Essayez de remplacer «et» par «


Après avoir joué avec votre échantillon, je remarque qu'Excel n'aime pas les espaces entre les champs

par exemple au lieu de

"20051", "", "2009 Sep 30 02:53:23", ...

tu veux

"20051","","2009 Sep 30 02:53:23",...

un remplaçant d'expression régulière décent devrait être en mesure de le gérer avec

Find:    |("[^"]*",) |
Replace: |\1|

(caractères de tuyau pour les repères visuels uniquement)

Ou modifiez simplement le code .Net si vous y avez accès ;-)

En outre, comme l'a souligné Arjan , vous devrez peut-être également convertir le fichier UTF-8 en ANSI pour empêcher la cellule A1 de contenir la nomenclature et ses qoutes environnantes.

J'ai rencontré le Catch 22 de CSV encodé ANSI ne gérant pas les caractères internationaux et CSV encodé UTF n'étant pas géré correctement par Excel; et pas trouvé de solution lors de la maintenance du CSV. Si la prise en charge des caractères internationaux est requise, les formats XML (ou XLS natif) semblent la seule solution, au détriment de la simplicité.

Communauté
la source
Aucune citation intelligente impliquée. Ce fichier a été généré pour utiliser des guillemets std à partir d'un programme écrit en .Net.
Rory Becker
Je n'avais pas l'intention de dire que les fichiers UTF-8 devraient être codés différemment. Mais lors de l'importation d'UTF-8, il faut en effet dire à Excel quel est le codage. Et UTF-8 est caché quelque part en dessous dans cette longue liste d'encodages.
Arjan
J'ai importé de nombreux fichiers CSV encodés en UTF-8. Je suis sûr que s'ils avaient une nomenclature.
Arjan
@lumbarious: Vous êtes une STAR! Fonctionne parfaitement ... Je ne peux pas croire qu'Excel ne peut pas gérer cela :(
Rory Becker
1
Oui, apparemment les espaces entre les champs confondent complètement Excel 2011. La suppression des espaces corrige le problème et empêche également Excel d'inclure les guillemets dans les données. Je suppose qu'il y a une spécification quelque part qui indique que les guillemets doubles ne délimitent les données que si elles sont directement adjacentes à la virgule.
Peter Gluck
9

Ce problème me tourmente depuis plusieurs années. Je viens de découvrir la solution et elle est évoquée dans les réponses ci-dessus mais pas explicitement expliquée.

C'est l'espace après la virgule!

Cela n’importe pas dans Excel;

HEADER1, HEADER2
"1,000", "2,000"

Tandis que

HEADER1,HEADER2
"1,000","2,000"

Travaux!

Mark Milbourne
la source
3
Bienvenue sur Super User! Cette réponse a été rédigée de manière utile et claire. Merci pour votre contribution et nous espérons que vous resterez.
user1717828
YAAAS! La réponse acceptée a la vraie réponse à la question enfouie contrairement à cette réponse. L'opération n'utilise pas de guillemets intelligents.
Dardub
2

Vous pouvez également essayer CSVEd qui est gratuit.

Alan B
la source
2

Lorsque j'essaie d'ouvrir ce fichier, Excel ignore complètement les guillemets et suppose qu'ils font partie des données. Il divise donc les champs contenant des virgules en plusieurs colonnes.

Si vous n'utilisez pas accidentellement des citations intelligentes comme Lumbarius l'a suggéré , et en supposant que vous êtes sous Windows: cela peut être dû à vos paramètres régionaux. Lorsque vous double-cliquez ou utilisez Fichier »Ouvrir, Excel ne vous demande aucun détail, mais utilise simplement ces paramètres.

Pourtant, l'invocation manuelle de la fonction d'importation (comme vous l'avez fait) aurait dû fonctionner, donc je doute que la modification des paramètres régionaux vous aidera ...

Arjan
la source
Cela ressemble plus à un commentaire qu'à une réponse ...
Metafaniel
Cette suggestion a résolu mon problème exactement! Faire une importation CSV (Data> From Text / CSV) ne fonctionnait pas comme prévu, mais si je viens de faire Fichier> Ouvrir sur le fichier CSV, cela a fonctionné. Ensuite, j'ai pu simplement copier / coller la table entière dans mon autre classeur.
WOUNDEDStevenJones
1

Avez-vous vérifié l'encodage des caractères de votre fichier? Essayez de définir le codage des caractères sur UTF-8.

Vous pouvez utiliser notepad2 pour modifier l'encodage des caractères.

Josh Comley
la source
Le codage est signalé par Notepad2 comme étant "UTF8 avec signature"
Rory Becker
Ensuite, lors de l'importation, vous devez faire défiler la liste de codage. UTF-8 est caché quelque part en bas de la liste. (Pas besoin d'utiliser des fichiers CSV encodés en UTF-8, mais comme votre entrée est déjà UTF-8, vous devez en effet dire à Excel ce qui doit être utilisé. Notez qu'un guillemet normal serait encodé de la même manière en ASCII, Western et UTF -8, mais peut-être que la signature (une marque d'ordre des octets) ou d'autres caractères gâchent?)
Arjan
@Peter Pourquoi changer le lien officiel vers Wikipedia? Cela n'a aucun sens? Nous ne voulons pas envoyer trop de monde, et cela ne justifie certainement pas une modification - en particulier sur un post de deux ans.
slhck
1

Juste pour ajouter aux réponses ici: concentrez-vous sur les ESPACES après les COMMAS dans vos fichiers CSV. Excel ne les aime pas si vous avez cité des champs dans vos données.

J'aime Excel (4 colonnes de données):

a, b, c, d

Mais n'aime pas (3 colonnes de données):

a, "b, c", d

Il aime (3 colonnes de données):

a,"b, c",d
DocOc
la source
Je viens de toucher ce problème. Je me cognais la tête contre le mur jusqu'à ce que j'arrive à cette note. C'est tout simplement incroyable. J'utilise Excel 2017 et cette bêtise existe toujours ...
Albert Godfrind
1

J'ai rencontré ce problème aujourd'hui et j'ai également trouvé une solution qui fonctionnait pour moi.

Mon environnement / contexte: J'ai une page Web avec des questions (de formulaire) qui contiennent des guillemets doubles et des virgules. Les questions et les réponses sont extraites de la base de données et écrites dans un fichier Excel à des fins de génération de rapports.

J'ai eu le même problème décrit ci-dessus: les questions qui comprenaient à la fois des guillemets doubles et des virgules étaient divisées en plusieurs colonnes dans Excel.

À mes fins, l' utilisation de deux guillemets simples à la place d'un guillemet double a fait l'affaire.

-> sur le site, deux guillemets simples ressemblent à un guillemet double pour les visiteurs du site

-> Dans le fichier Excel, encore une fois, deux guillemets simples ressemblent à un guillemet double pour les utilisateurs qui consultent les données du rapport

Je me rends compte que cette solution ne fonctionnera pas pour tout le monde, mais j'espère qu'elle aidera quelqu'un.

Gerald
la source
1

J'ai pu le faire en utilisant:

a,b,c,"=""(1,2,3)"""

ce qui donne quatre colonnes:

|  a  |   b   |   c   |   (1,2,3)   |
johnb
la source
0

Une autre façon de procéder:

  1. Ouvrez le fichier dans LibreOffice ou OpenOffice Calc.
  2. Définissez les options d'importation correctes, comme UTF-8, séparées par des virgules, ...
  3. Stockez le fichier en tant que ods ou xls
  4. Ouvrez le nouveau fichier dans Excel.

De cette façon, vous pouvez définir le codage correct comme UTF-8, que de nombreuses versions (toutes?) D'Excel ne peuvent pas gérer correctement sans nomenclature et vous n'avez pas à vous soucier d'une expression régulière qui pourrait remplacer du texte à l'intérieur du champ et vous ne le remarquez pas.

12431234123412341234123
la source