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

89

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

Michael Shnitzer
la source

Réponses:

44

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

Il suffit de cocher la case "Citer toutes les cellules de texte": Exporter au format CSV avec 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.

Pete
la source
7
Bien qu'il ne s'agisse pas d'une réponse à la question spécifique, il s'agit d'une solution de contournement plus simple que d'essayer d'inciter mes clients à utiliser une macro!
Duncanmoo
J'en ai marre d'utiliser cette méthode tous les jours, c'est pourquoi je suis ici
vendredi
Je pense que c'est la solution la plus facile et la plus pratique depuis OpenOffice est un logiciel portable. Vous n'avez rien à installer ou à écrire des codes.
Scott Chu
meilleure réponse jamais !!
Rajya Vardhan
20
Pas une réponse du tout. La question concerne explicitement MS Excel
vendredi
43

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

sahmeepee
la source
10
Il est intéressant de noter que cette macro utilise Integer pour les valeurs de ligne et de colonne. Vous obtiendrez une erreur si vous essayez d'exporter plus de 32 768 lignes. Changer les types de données en Long, par exemple, résoudra ce problème.
Dan
Bon endroit (+1). On dirait qu'ils n'ont pas mis à jour le code depuis qu'il a été écrit pour les versions d'Excel avec seulement 32 768 lignes.
Sahmeepee
9
J'ai pris la liberté de créer un résumé avec cette macro et quelques corrections: gist.github.com/fabriceleal/7803969
fableal
@fableal Excellent extrait! Cela mérite d'être dans une réponse.
xiankai
Office 2010 continue de déborder sur le nombre élevé de lignes sélectionnées, comme l'a mentionné @sahmeepee.
access_granted
18

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 "''"@"''"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 .

Michael
la source
Hmmm… ça m'a donné '' ITEM '' (deux guillemets simples) plutôt que "(un guillemet double). Je viens juste de faire une recherche et un remplacement pour le réparer.
Clay Nichols
6
Le format aurait dû être \ "@ \"
manat
Cette réponse était en fait une réponse parfaite si vous utilisez LibreOffice - il manque totalement une option "texte" dans le menu Format> Format de numéro, bien que leur documentation insiste sur le fait que l'option est là. Si vous cliquez avec le bouton droit de la souris sur "Formater les cellules" dans LibreOffice, vous obtenez une liste COMPLÈTE d'options d'interprétation de cellules - plutôt que les 6 options quelque peu inutiles présentées dans la liste déroulante.
1owk3y
La réponse de @ manat, mais sans les citations frisées:\"@\"
MSC
12

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.

ssaviers
la source
Pour plus de commodité, maintenez la touche Maj enfoncée et cliquez avec le bouton droit de la souris sur le dossier dans lequel votre fichier CSV est enregistré, puis choisissez Ouvrir la fenêtre PowerShell ici , ce qui simplifie la commande import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. N'oubliez pas d'utiliser des guillemets simples autour des noms de fichiers avec des espaces ou d'autres caractères spéciaux.
Walf
4

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.

utilisateur326114
la source
Le seul inconvénient serait que le champ contient lui-même une citation double.
access_granted
3

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 "tabulation" par le texte "," (c.-à-d. Littéralement guillemet, virgule, guillemet), 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.

Blueacid
la source
1
Si vous vouliez faire cela dans Notepad ++, vous feriez mieux d'utiliser la recherche par expression régulière et de le remplacer, puis vous pourrez effectuer les 3 opérations de remplacement (début de ligne, tabulation et fin de ligne) à un seul endroit
sahmeepee
3

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

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

Steve Coleman
la source
1
Cela fonctionne bien pour alpha - vous aurez besoin de \ "# \" pour les colonnes avec des valeurs numériques.
DropHit
Entre le \ "@ \" et le \ "# \" cela fonctionne. Mais il me reste à éditer les en-têtes de Notepad ++ pour les colonnes numériques, puis à remplacer tous les "" "par". Quelle douleur.
Gary
Je n'ai pas essayé .. mais si vous créez un fichier csv, vous ne pouvez pas simplement changer les colonnes en texte et utiliser \ "@ \"
Steve Coleman
2
  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"
  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é
Eric
la source
1

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 Edition / Editeur de colonnes ... , dans le champ " Texte à insérer ", entrer " , alors le début de chaque ligne aura une citation, alors vous pouvez utiliser une expression régulière pour rechercher / remplacer tous les onglets.

Michael Zhang
la source
0

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 recevez un message.#1083 - Field separator argument is not what is expected

Greg
la source
3
Mircrosoft Works <-? Êtes-vous sûr de cela?
Nixda
0

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 la deuxième colonne de mes données était un nombre l' "''"@"''"approche n'a pas 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.

utilisateur415149
la source
0

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

doyen
la source
0

L'exportation de chaînes séparées par des virgules et entre guillemets peut être effectuée avec Excel 2016 et le Bloc-notes uniquement, à 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 de son 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. Mettez des caractères qui 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 mission de feuille de calcul supplémentaire effectuée.

Peut-être qu'un jour les outils d’exportation d’Access seront intégrés à Excel. Une approche plus générique parmi les programmes qui utilisent le couper-coller consiste à 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.

HGB
la source
0

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é
un CVn
la source
Aucune explication pour le downbvote? Par pour le cours, mais comment les autres doivent-ils apprendre? VOUS pensez peut-être que ce qui ne va pas est évident, M. Downvoter, mais cela peut ne pas être évident pour tout le monde. Nous essayons de construire une communauté ici, et vous n’aidez pas.
Mawg
-1

Ceci est ma recette Je déteste avoir à faire cela, mais je n'avais pas de meilleur moyen. Dans mon cas, je ne reçois pas de citations dans aucun domaine. J'avais également besoin d'utiliser le codage UTF-8 et; au lieu des onglets, c'est donc ce que j'ai fini de faire.

REMARQUE: en raison de la possibilité de mettre des guillemets doubles entourés de guillemets simples, etc., j’ai volontairement utilisé la "mise en forme au clavier" pour indiquer à la fois les frappes au clavier, les caractères littéraux et les chaînes.

  1. Insérez une nouvelle colonne avant toute autre dans votre feuille de calcul Excel (cliquez sur le titre de la 1ère colonne, la colonne entière sera sélectionnée, cliquez avec le bouton droit de la souris, sélectionnez "Insérer").
  2. Sélectionnez toute la plage de cellules vides de la nouvelle colonne (elles sont sélectionnées par défaut). Sur le champ de formule, insérer ce que vous voulez: par exemple, xxx. Appuyez sur CTRL+ enterpour remplir la colonne entière avec la même valeur.
  3. Enregistrez le fichier en tant que texte Unicode (* .txt).
  4. Ouvrir le fichier dans Notepad ++.
  5. Appuyez sur CTRL+ fpour ouvrir Rechercher / Remplacer.
  6. Aller à l'onglet Remplacer.
  7. En "mode de recherche", sélectionnez "Etendu (\ n, \ r, \ t, \ 0, \ x ...)".
  8. Dans le champ "Rechercher", entrez xxxplus une tabfrappe.
  9. Dans le champ "Remplacer", entrez "(un guillemet double).
  10. Appuyez sur Remplacer tout.
  11. Dans le champ "Rechercher", saisissez une tabfrappe.
  12. Dans le champ "Remplacer", entrez ";"(guillemet double, point-virgule, guillemet double).
  13. Appuyez sur Remplacer tout.
  14. Tu as presque fini. Pour le dernier guillemet double, entrez \rdans le champ "Rechercher" et "\r"(guillemet double, barre oblique inverse, guillemet double) dans le champ "Remplacer". Appuyez sur Remplacer tout.
  15. Tant que vous n'utilisez pas de caractères chinois, etc., vous pouvez modifier le codage en UTF-8 et enregistrer le fichier en toute sécurité.
Pere
la source
-1

J'ai rencontré ce problème plusieurs fois. Voici la solution la plus simple que j'ai trouvée.

  1. Enregistrez le fichier en tant que Excel
  2. Importer Excel dans une table Access
  3. Exportez la table depuis Access vers un fichier texte.

Access vous permettra de spécifier le délimiteur d'exportation sous forme de virgule et de qualifier les champs de texte avec des guillemets. Dans l'assistant d'exportation, vous pouvez spécifier le délimiteur ou le caractère autour des chaînes souhaitées.

Vous devrez peut-être créer une requête Access pour organiser les champs dans un ordre particulier ou masquer le champ d'identification automatique ajouté par Access.

Aussi ... une fois exporté vers un fichier CSV, ne l'ouvrez PAS à nouveau dans Excel. Si vous voulez regarder les résultats, ouvrez-le dans le bloc-notes. Excel a tendance à jouer avec les données d’un csv ... Je pense que c’était des champs remplis de zéros si je me souviens bien.

Gunther
la source
Cela semble dupliquer les informations de la réponse de user326114.
fix1234
-1

Voici comment utiliser l'application OpenOffice pour créer une feuille de calcul Excel et créer un fichier texte (csv) avec des guillemets autour de chaque champ de texte.

Ouvrez le fichier Excel avec OpenOffice, puis procédez comme suit:

Fichier> Enregistrer sous

Donnez un nouveau nom au fichier que vous allez créer

Pour Filetype, choisissez "Test CSV (.csv)"

Activer la case à cocher "Modifier les paramètres de filtre"

cliquez sur "Enregistrer"

choisissez "Conserver le format actuel"

Le délimiteur de champ doit être une virgule:

Le délimiteur de texte doit comporter un guillemet: "

cochez la case "Citer toutes les cellules de texte"

cliquez sur OK"

Cela a fonctionné pour moi!

Mary H
la source