web-dev-qa-db-fra.com

Comment forcer Excel à citer toutes les colonnes d'un fichier CSV?

Excel ne place que des guillemets autour de certains champs. Comment forcer Excel à enregistrer un fichier CSV avec des guillemets autour de chaque colonne?

84
Michael Shnitzer

Si vous ouvrez le fichier XLS dans LibreOffice ou OpenOffice, puis enregistrez sous ... et choisissez Texte CSV, il permet de générer un fichier CSV incluant également des guillemets en tant que délimiteurs. Ex .: "Smith", "Pete", "Canada", "Jones", "Mary", "Angleterre"

Il suffit de cocher la case "Citer toutes les cellules de texte": Export to CSV with LibreOffice

Afin de citer également des champs numériques, mettez en surbrillance votre plage de cellules et modifiez le formatage de la cellule en "texte" avant de l'enregistrer.

44
Pete

Cette page a aussi la solution qui vient directement de la bouche du cheval:

http://support.Microsoft.com/kb/291296/en-us

Si le lien se dégrade, le sujet à rechercher est:

"Procédure pour exporter un fichier texte avec des délimiteurs de virgule et de citation dans Excel" et/ou "Q291296"

tl; dr: utilise leur macro

42
sahmeepee

J'ai trouvé cette solution facile:

  1. Mettez en surbrillance les cellules auxquelles vous souhaitez ajouter les guillemets.
  2. Faites un clic droit et accédez à: Formater les cellules → Onglet: Numéro → Catégorie: Personnalisé.
  3. Collez les éléments suivants dans le champ Type : "''"@"''" (voir détails ci-dessous)
  4. Cliquez sur "ok"

La chaîne que vous collez est "''"@"''" qui est une citation double, une citation simple, une citation simple, une citation double, un symbole @, une citation double, une citation simple, une citation simple, une citation double.

Édité pour Excel 2010 à partir des informations trouvées ici .

17
Michael

Powershell semble se vider correctement. donc quelque chose comme

rechercher powershell.exe sur la machine Windows si vous ne connaissez pas powershell.

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

J'espère que ça aide quelqu'un.

8
ssaviers

Pour moi, c'était le plus simple: j'ai importé la feuille de calcul dans Access 2010, puis exporté sous forme de fichier texte délimité. M'a donné les guillemets autour de mes champs. Cela prend moins d’une minute pour 42k lignes maintenant que j’ai les marches baissées.

4
user326114

Mettez en surbrillance les cellules auxquelles vous souhaitez ajouter les guillemets. Accédez à Format -> Cellules -> Copie/Copie personnalisée dans le champ Type:\"@ \" Cliquez sur "okay" Soyez heureux de ne pas avoir tout fait à la main.

De: http://www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-Excel-automatically/

2
Steve Coleman
  1. Mettez en surbrillance les cellules auxquelles vous souhaitez ajouter les guillemets.
  2. Faites un clic droit et accédez à: Cellules For¬mat → Onglet: Numéro → Catégorie: Personnalisé
  3. Collez le texte suivant dans le champ Type: "''" @ "''" (voir détails ci-dessous)
  4. Cliquez sur "ok"
  5. Ouvrez le fichier .csv avec Notepad (ou équivalent)
  6. Remplacer tout '' (guillemets simples répétés) par "(guillemet double)
  7. Remplace tout ;
  8. Enregistrer le fichier .csv révisé
2
eric

J'ai trouvé un autre travail qui n'implique pas la macro VBA, mais qui nécessite Notepad ++ ou un éditeur de texte similaire.

Exportez votre fichier sous forme de texte séparé par des tabulations, puis ouvrez le fichier exporté dans Notepad ++. Remplacez toutes les occurrences du caractère "tab" par le texte "," (c.-à-d. Littéralement guillemets, virgules, guillemets), puis utilisez une autre macro pour préfixer et suffixer chaque ligne de texte d'un guillemet double.

Un peu hacky mais je l'ai trouvé plus rapide que de faire fonctionner une macro VBA.

2
Blueacid

Si vous utilisez Notepad ++ pour ajouter des guillemets au début de chaque ligne, ouvrez simplement le fichier csv exporté, placez le curseur sur la 1ère ligne, la 1ère colonne, puis cliquez sur le menu Édition/Editeur de colonne ... , dans le champ ' Texte à insérer ', entrez ", le début de chaque ligne sera précédé d'un guillemet. Vous pourrez alors utiliser une expression régulière pour rechercher/remplacer tous les onglets.

1
Michael Zhang

La réponse de Michael du 21 août 2014 est vraiment utile. Cependant, je devais effectuer une ou deux étapes supplémentaires:

  1. Ouvrez le fichier .csv avec Notepad (ou équivalent)
  2. Remplacer tout '' (guillemets simples répétés) par "(guillemet double)
  3. Remplace tout ; (utilisé comme délimiteur dans la version allemande d’Excel) avec,
  4. Enregistrer le fichier .csv révisé
0
user366932

Si vous avez MS Access (ver 2007), importez le fichier puis exportez-le sous forme de fichier texte. Puis changez le .txt en .csv. Notez que tous les champs de chiffres ne sont pas entourés de guillemets. Par conséquent, si vous avez besoin de guillemets également autour des nombres, changez le champ dans Access et changez le champ d’un champ de nombre à un champ de texte.

0
Dean

L'exportation de chaînes séparées par des virgules et entre guillemets peut uniquement être effectuée avec Excel 2016 et le Bloc-notes, à l'aide d'une copie des données, d'une formule, d'une exportation, d'une modification des propriétés du fichier, d'un remplacement dans le Bloc-notes, de la sauvegarde du fichier exporté et du nettoyage. Chacun est une étape simple. En détail:

  1. Copiez les colonnes à exporter dans une nouvelle feuille intermédiaire pour conserver l'original et en tant que sauvegarde, la nouvelle feuille devant être supprimée ultérieurement pour laisser la feuille de calcul telle qu'elle était.

  2. Si des caractères ne se produisent pas, dites "#" ou ";-)" à chaque extrémité d'une chaîne de la colonne, dites A avec la formule =concat("#",trim(A1),"#"), en plaçant la formule sur toutes les lignes d'une autre colonne.

    • Les colonnes adjacentes peuvent être créées en même temps, mais ne citez pas de chiffres pour éviter de les lire sous forme de chaînes.
    • Le rognage évite les espaces de fin qui peuvent déclencher un comportement d'exportation peu habile.
    • Les chaînes ne doivent pas contenir de "" "qui pourrait perturber l'importation.
  3. Copiez les nouvelles colonnes sur A ..., en utilisant la méthode "123" afin de ne pas porter la formule.

  4. Exportez la feuille sous forme de fichier CSV, afin de mettre les virgules entre les champs, y compris les nombres.

  5. Modifiez les propriétés file.csv afin qu’il puisse être ouvert avec le Bloc-notes.

  6. Utilisez le Bloc-notes pour remplacer le (s) caractère (s) arbitraire (s) par "" '.

  7. Bien qu'il semblerait judicieux d'utiliser "en tant que caractère arbitraire, il doit être placé dans une cellule différente, par exemple" $ A $ 50 ", puis ce qui apparaît à l'exportation est" "" "", apparemment un autre déclencheur peu pratique.

  8. Dans le bloc-notes, le fichier doit être enregistré, devenant un fichier * .txt à importer et le fichier intermédiaire * .csv supprimé.

  9. Avec le nettoyage de la feuille de calcul supplémentaire mission accomplie.

Peut-être que les outils d’exportation d’Access pourraient un jour être intégrés à Excel. Une approche plus générique parmi les programmes qui utilisent le couper-coller serait de faire en sorte que les options de collage incluent un choix de moyens pour interpréter la structure de sortie et fournir des délimiteurs.

0
HGB

J'ai utilisé l'approche ci-dessous pour prendre trois colonnes dans Excel et créer la chaîne dans la quatrième colonne.

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

Mon problème avec l'approche "''"@"''" est que la deuxième colonne de mes données était un nombre l'approche "''"@"''" n'a rien fait avec les chiffres. Parfois, la deuxième colonne est vide mais je devais m'assurer qu'elle était bien représentée dans le fichier texte final.

0
user415149

Pour les utilisateurs Windows

  1. "Enregistrer sous" fichier Excel au format CSV
  2. Ouvrir un fichier enregistré avec Mircrosoft Works Spreadsheet
  3. "Enregistrer sous" la feuille de calcul au format CSV
  4. Tous les champs non numériques ont maintenant "autour d'eux

Notez que ce n'est pas la même citation de clavier qui a une variété avant/arrière.
Donc, si vous utilisez CSV pour LOAD dans la table Mysql, coupez et collez dans le paramètre ENCLOSED, sinon vous vous demanderez pourquoi vous obtenez le message #1083 - Field separator argument is not what is expected

0
Greg