644 votes

Excel vers CSV avec encodage UTF8

J'ai un fichier Excel contenant des caractères espagnols (tildes, etc.) que je dois convertir en fichier CSV pour l'utiliser comme fichier d'importation. Cependant, lorsque j'enregistre en tant que CSV, les caractères espagnols "spéciaux" qui ne sont pas des caractères ASCII sont maltraités. Il semble également le faire avec les guillemets gauche et droit et les tirets longs qui semblent provenir de l'utilisateur original qui a créé le fichier Excel sous Mac.

Puisque CSV n'est qu'un fichier texte, je suis sûr qu'il peut gérer un encodage UTF8, donc je suppose qu'il s'agit d'une limitation d'Excel, mais je cherche un moyen de passer d'Excel à CSV et de conserver les caractères non Ascii.

0 votes

15 votes

J'ai vu cette question avant de la poster mais il s'agit d'avoir déjà un CSV UTF8 et de l'ouvrir dans Excel et non l'inverse.

8 votes

Les réponses ci-dessous semblent fonctionner, mais ce ne sont que des solutions de contournement. Quelqu'un sait-il comment faire pour qu'Excel fasse cela ?

421voto

nevets1219 Points 3482

Une solution de contournement simple consiste à utiliser Google Spreadsheet. Collez (les valeurs uniquement si vous avez des formules complexes) ou importez la feuille puis téléchargez le CSV. Je viens d'essayer quelques caractères et cela fonctionne plutôt bien.

EDIT : Une autre alternative - En fait, ils utilisent des macros VB ou des modules complémentaires pour forcer l'enregistrement en UTF8. Je n'ai pas essayé ces solutions mais elles semblent raisonnables.

1 votes

Merci ! C'est une solution simple, bien meilleure que de se battre avec Excel.

0 votes

Ajout d'une autre solution possible (non testée) sans avoir à utiliser Google Spreadsheet.

69 votes

Peut-être que Joel Slotsky (ancien Premier ministre d'Excel) pourrait leur envoyer son vieux de dix ans poste sur Le minimum absolu que tout développeur de logiciels doit absolument, positivement connaître sur l'Unicode et les jeux de caractères ?

145voto

aendrew Points 1801

J'ai trouvé OpenOffice Calc, le tableur de l'entreprise, est très efficace pour traiter les données CSV. Dans la boîte de dialogue "Enregistrer sous...", cliquez sur "Options de format" pour obtenir différents codages pour le CSV. LibreOffice fonctionne de la même manière AFAIK.

J'espère que cela vous aidera !

0 votes

Je suis sûr que cela fonctionne, c'est juste que je n'ai pas encore OpenOffice, donc Google Docs était plus facile dans ma situation. Mais merci pour la suggestion.

21 votes

OpenOffice Calc dispose de plus d'options et de meilleures options pour ouvrir et enregistrer des fichiers "CSV" (séparateurs de champs, encodage, etc.) que Google Docs et Excel. De plus, Google Docs souffre actuellement d'une limite de 400 000 cellules par feuille de calcul, ce qui n'est pas le cas d'OpenOffice Calc.

4 votes

Je peux confirmer que LibreOffice fonctionne également : il offre des options de codage des caractères à l'exportation qui font cruellement défaut à Excel.

122voto

elomage Points 583
  1. Enregistrez la feuille Excel en tant que "Texte Unicode (.txt)". La bonne nouvelle est que tous les caractères internationaux sont en UTF16 (attention, pas en UTF8). Cependant, le nouveau fichier "*.txt" est délimité par des tabulations, et non par des virgules, et n'est donc pas un véritable CSV.

  2. (facultatif) À moins que vous ne puissiez utiliser un fichier délimité par des tabulations pour l'importation, utilisez votre éditeur de texte préféré et remplacez les caractères TAB par des virgules ",".

  3. Importez votre fichier *.txt dans l'application cible. Assurez-vous qu'elle peut accepter le format UTF16.

J'utilise cette procédure pour importer des données d'Excel vers Moodle.

5 votes

Enfin quelque chose qui fonctionne ! J'ai essayé les options Excel ci-dessus sur Excel 2013 sans succès. Je viens de passer à l'utilisation de \t comme caractère fractionné lorsque je l'ai analysé et cela a fonctionné parfaitement !

1 votes

Besoin d'exporter un XLS en CSV pour l'importer dans MySQL. En utilisant Excel 2003, j'ai exporté au format "Unicode Text (.txt)", puis utilisé Notepad++ pour remplacer le TAB par ; J'ai ensuite importé le fichier txt dans phpmyadmin avec par défaut "Character set of the file : utf-8", Format "CSV using LOAD DATA". Tous les encodages ont été transférés correctement.

0 votes

Pour les petits fichiers et les données simples, j'utilise ce raccourci : sélectionner la zone ou les colonnes que je veux exporter, puis copier (Ctrl+C). Ensuite, allez dans mon éditeur de texte (par exemple, Gedit dans Ubuntu) et collez. L'éditeur de texte a toutes les données sous forme de TAB délimité. Ensuite, enregistrez comme un fichier texte, généralement en UTF8. Le format final peut dépendre de la configuration de votre éditeur de texte.

46voto

Eric Points 251

Je sais qu'il s'agit d'une vieille question, mais je suis tombé sur cette question alors que je me débattais avec les mêmes problèmes que l'OP.

N'ayant trouvé aucune des solutions proposées comme une option viable, j'ai cherché à découvrir s'il y avait un moyen de le faire en utilisant simplement Excel.

Heureusement, j'ai découvert que le problème de perte de caractères ne se produit (dans mon cas) que lors de l'enregistrement du format xlsx au format csv. J'ai essayé d'enregistrer le fichier xlsx en xls d'abord, puis en csv. Cela a fonctionné.

Faites-en l'essai et voyez si cela vous convient. Bonne chance.

3 votes

Pour moi, sur Excel pour Mac 2011, cela fonctionne mais seulement si je choisis Windows comma separated (CSV) . Cela ne fonctionne pas si j'utilise les options CSV par défaut ou DOS - ces deux options remplacent les caractères accentués par des caractères inutiles. Testé pour les caractères suivants é , è , â ... Je ne sais pas si c'est un vrai UTF8 mais les caractères ne sont pas tronqués.

13 votes

Confirmation rapide - les fichiers produits avec cette méthode sur (Excel pour Mac 2011) ne pas produire des csvs UTF-8, MAIS mais ils produisent des CSV qui contiennent au moins les caractères corrects et peuvent donc être utilisés. converti sans douleur en UTF8 dans un éditeur de texte Ce qui est un grand pas en avant par rapport aux déchets ridicules qu'Excel sort par défaut.

0 votes

Oui, je suis d'accord, cela a fonctionné pour moi aussi (Excel Mac 2011) et cela mérite vraiment plus de votes positifs.

38voto

pmilewski Points 151

Vous pouvez utiliser icônev sous Unix (également disponible sous Windows sous le nom de libiconv ).

Après avoir enregistré comme CSV sous Excel dans la ligne de commande, mettez :

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(n'oubliez pas de remplacer cp1250 par votre encodage).

Fonctionne rapidement et est idéal pour les gros fichiers comme la base de données des codes postaux, qui ne peut pas être importée dans GoogleDocs (limite de 400.000 cellules).

5 votes

C'est inutile si votre contenu contient des caractères qui ne peuvent pas être encodés en 1250. Une meilleure solution serait d'exporter en tant que "Unicode .txt" dans Excel et d'utiliser iconv pour convertir depuis Utf16. Peut-être aussi faire un sed o tr pour traduire de ' \t ' à ','

5 votes

L'encodage par défaut d'Excel semble être CP858 lors de l'enregistrement en tant que CSV ou MS-DOS CSV, et Windows 1252 lors de l'enregistrement en tant que Windows CSV (testé sur Excel pour Mac 2011).

4 votes

Je suis tout à fait d'accord pour dire que c'est inutile, car lorsqu'Excel enregistre au format .csv, il perd des informations lorsqu'il s'agit de points de code Unicode qui ne peuvent pas être encodés dans un encodage d'un octet par point de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X