Excel to CSV avec encodage UTF8

j'ai un fichier Excel qui contient des Caractères espagnols (tildes, etc.) que j'ai besoin de convertir un fichier CSV à utiliser comme un fichier d'importation. Cependant, quand J'enregistre en CSV, il manipule les Caractères espagnols" spéciaux " qui ne sont pas des caractères ASCII. Il semble aussi le faire avec les guillemets de gauche et de droite et les longs tirets qui semblent provenir de l'utilisateur original créant le fichier Excel dans Mac.

puisque CSV n'est qu'un fichier texte, je suis sûr qu'il peut gérer un UTF8 encodage, donc je devine que c'est une limitation Excel, mais je cherche un moyen de passer D'Excel à CSV et de garder les caractères non-ASCII intacts.

528
demandé sur K48 2010-11-19 03:48:16

30 réponses

une solution simple est D'utiliser Google Spreadsheet. Coller (valeurs seulement si vous avez des formules complexes) ou importer la feuille puis télécharger CSV. J'ai juste essayé quelques caractères et il fonctionne plutôt bien.

NOTE: Google Sheets a des limitations lors de l'importation. Voir ici .

NOTE: attention aux données sensibles avec Google Sheets.

EDIT: Another alternative - fondamentalement, ils utilisent VB macro ou addins pour forcer la sauvegarde en UTF8. Je n'ai essayé aucune de ces solutions, mais elles semblent raisonnables.

369
répondu nevets1219 2017-04-18 01:01:55

j'ai trouvé OpenOffice l 'application de tableur, Calc, est vraiment bon à la manipulation des données CSV.

dans le" Save As..."dialog, cliquez sur" Options de Format " pour obtenir des encodages différents pour CSV. LibreOffice fonctionne de la même manière autant que je sache.

calc save dialog

112
répondu aendrew 2016-12-15 02:45:20
  1. sauvegardez la feuille Excel comme" texte Unicode (.txt)". La bonne nouvelle est que tous les personnages internationaux sont en UTF16 (note, pas en UTF8). Toutefois, le nouveau "*.le fichier txt " est délimité par des tabulations, pas par des virgules, et n'est donc pas un véritable CSV.

  2. (optionnel) sauf si vous pouvez utiliser un fichier délimité par un onglet pour l'importation, utilisez votre éditeur de texte préféré et remplacez les caractères de L'onglet par des virgules",".

  3. Importer vos *.fichier txt dans l'application cible. Assurez-vous qu'il peut accepter le format UTF16.

si UTF-16 a été correctement mis en œuvre avec le soutien des points de code non-BMP, que vous pouvez convertir un fichier UTF-16 en UTF-8 sans perte d'information. Je vous laisse trouver votre méthode préférée.

j'utilise cette procédure pour importer des données D'Excel à Moodle.

99
répondu elomage 2016-03-18 10:14:57

je sais que c'est une vieille question, mais il se trouve que je suis venu sur cette question tout en luttant avec les mêmes questions que L'OP.

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

heureusement, j'ai trouvé que la question des caractères perdus se produit seulement (dans mon cas) lors de la sauvegarde du format XLSX au format csv. J'ai essayé de sauvegarder le fichier xlsx sur xls en premier, puis le format csv. Elle a effectivement travaillé.

s'il vous Plaît essayez-le et voyez si cela fonctionne pour vous. Bonne chance.

41
répondu Eric 2012-10-30 00:36:23

vous pouvez utiliser iconv commande sous Unix (également disponible sur Windows comme libiconv ).

après avoir enregistré en tant que CSV sous Excel dans la ligne de commande a mis:

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 très bien pour les gros fichiers comme la base de données des codes postaux, qui ne peuvent pas être importés sur GoogleDocs (limite de 400.000 cellules).

34
répondu pmilewski 2012-06-12 10:33:40

le seul" moyen facile " de le faire est le suivant. Tout d'abord, réalisez qu'il y a une différence entre ce qui est affiché et ce qui est caché dans L'Excel .fichier csv.

(1) ouvrez un fichier Excel où vous avez les informations (.xls,.xlsx)

(2) dans Excel, choisissez " CSV (virgule délimitée) (*.csv) comme le type de fichier et enregistrer comme ce type.

(3) en NOTEPAD (trouvé sous "Programmes" puis accessoires dans le menu Démarrer), ouvrez le sauvegardé .fichier csv dans Notepad

(4) ensuite, choisissez - > Enregistrer sous..et au bas de la boîte "enregistrer sous", il y a une boîte de sélection étiquetés comme "Encodage". Sélectionnez UTF-8 (ne pas utiliser ANSI ou vous perdez tous les accents, etc). Après avoir sélectionné UTF-8, puis Enregistrer le fichier à un nom de fichier légèrement différent de l'original.

ce fichier est en UTF-8 et conserve toutes les caractères et accents et peut être importé, par exemple, dans MySQL et d'autres programmes de base de données.

cette réponse est tirée de ce forum .

22
répondu Nick 2017-06-29 22:16:05

un autre que j'ai trouvé utile: " Numéros " permet l'encodage des paramètres lors de l'enregistrement au format CSV.

21
répondu leander 2011-04-04 08:30:15

vous pouvez le faire sur une machine Windows moderne sans logiciel tiers. Cette méthode est fiable et elle traitera les données qui incluent des virgules citées, des caractères d'onglets cités, des caractères CJK, etc.

1. Enregistrer à partir d'Excel

dans Excel, enregistrer les données à file.txt en utilisant le type Unicode Text (*.txt) .

2. Start PowerShell

Exécuter powershell à partir du menu Démarrer.

3. Charger le fichier dans PowerShell

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. Enregistrer les données comme CSV

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation
18
répondu Don Cruickshank 2016-07-13 18:22:54

"nevets1219" a raison à propos de Google docs, cependant si vous "importez" simplement le fichier, il ne le convertit souvent pas en UTF-8.

mais si vous importez le CSV dans une feuille de calcul Google existante, il convertit en UTF-8.

Voici une recette:

  • sur L'écran principal Docs (ou Drive) cliquez sur le bouton "Create" et choisissez "Spreadsheet "
  • dans le menu" Fichier "choisissez" Importer
  • Cliquez Sur "Choisir Fichier "
  • choisir" remplacer tableur "
  • choisissez le caractère que vous utilisez comme séparateur
  • Cliquez Sur "Importer "
  • dans le menu" Fichier "choisissez" Télécharger sous" - > CSV (current sheet)

le fichier résultant sera en UTF-8

14
répondu RedYeti 2012-05-18 16:06:44

pour ceux qui recherchent une solution entièrement programmatique (ou du moins Côté Serveur), j'ai eu un grand succès en utilisant l'outil xls2csv de catdoc.

Installer catdoc:

apt-get install catdoc

Faire la conversion:

xls2csv -d utf-8 file.xls > file-utf-8.csv 

ça brûle vite.

notez qu'il est important que vous incluiez le drapeau -d utf-8 , sinon il encodera la sortie dans le codage par défaut cp1252 , et vous lancerez le risque de perdre des informations.

notez que xls2csv ne fonctionne également qu'avec les fichiers .xls , il ne fonctionne pas avec les fichiers .xlsx .

8
répondu mpowered 2016-03-20 20:28:04

qu'en est-il de L'utilisation de Powershell.

Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8
7
répondu Michael Schau 2014-02-17 14:28:01

aussi drôle que cela puisse paraître, le moyen le plus facile que j'ai trouvé pour sauver mon tableur de 180Mo dans un fichier CSV UTF8 était de sélectionner les cellules dans Excel, les copier et coller le contenu du presse-papiers dans SublimeText.

5
répondu oscaroscar 2014-02-27 15:14:27

Je n'ai pas été en mesure de trouver une solution VBA pour ce problème sur Mac Excel. Il semblait tout simplement impossible de produire du texte UTF-8.

donc j'ai finalement dû abandonner VBA, mordre la balle, et appris AppleScript. Ce n'était pas aussi mauvais que je le pensais.

La Solution

est décrite ici.: http://talesoftech.blogspot.com/2011/05/excel-on-mac-goodbye-vba-hello.html

3
répondu anroy 2011-05-07 16:15:52

sous environnement Windows, sauvegardez et travaillez avec le fichier comme D'habitude dans Excel, puis ouvrez le fichier Excel sauvegardé dans Gnome Gnumeric (gratuit). Sauvegardez le tableur Gnumeric de Gnome comme CSV qui - pour moi en tout cas-le sauve comme UTF-8 CSV.

3
répondu spring_chicken 2012-07-01 18:09:24

méthode facile à faire: Télécharger open office ( ici ), charger le tableur et ouvrir le fichier excel ( .xls ou .xlsx ). Ensuite, il suffit de l'enregistrer en tant que fichier texte CSV et une fenêtre s'ouvre demandant de garder le format actuel ou de sauvegarder en tant que A.Format ODF. sélectionnez "garder le format actuel" et dans la nouvelle fenêtre sélectionnez l'option qui fonctionne le mieux pour vous, en fonction de la langue dans laquelle votre fichier a été écrit. Pour la langue espagnole sélectionner Europe de l'Ouest ( Windows-1252/ WinLatin 1 ) et le fichier fonctionne très bien. Si vous sélectionnez Unicode ( UTF-8 ), cela ne fonctionnera pas avec les Caractères espagnols.

3
répondu Yessus 2012-11-18 08:11:39
  1. Enregistrer le fichier xls (fichier Excel) en tant que texte Unicode=>fichier sera enregistré au format texte (.txt)

  2. modifier le format de .txt pour .csv (renommer le fichier à partir de XYX.txt à XYX.csv

3
répondu Mena 2013-03-05 17:24:53

sous Excel 2016, nous avons une option D'exportation CSV dédiée au format UTF-8.

3
répondu Nolmë Informatique 2017-07-27 08:45:45

j'ai également rencontré le même problème, mais il ya une solution facile pour cela.

  1. ouvrez votre fichier xlsx dans Excel 2016 ou une version plus récente.
  2. dans" Save As "choose this option:" (CSV UTF-8(virgule délimitée)*.csv) "

il fonctionne parfaitement et un fichier csv est généré qui peut être importé dans n'importe quel logiciel. J'ai importé ce fichier csv dans ma base de données SQLITE et il fonctionne parfaitement avec tous les caractères unicode intact.

3
répondu Krish 2018-01-30 07:39:29

une deuxième option de" nevets1219 " est d'ouvrir votre fichier CSV dans Notepad++ et de faire une conversion vers ANSI.

choisissez dans le menu du haut : Codage - > convertir en Ansi

2
répondu SequenceDigitale.com 2011-02-16 18:57:40

voie la plus facile: pas besoin de Open office et google docs

  1. Enregistrer votre fichier en tant que "fichier texte Unicode";
  2. maintenant vous avez un fichier texte unicode
  3. ouvrez - le avec "notepad" et "Save as" it en sélectionnant "utf-8" ou autre page de code que vous voulez""
  4. extension de fichier de "txt" à" csv "

ne l'ouvrez pas avec Ms-office de toute façon!!! Maintenant vous avez un onglet délimité fichier CSV.

2
répondu Solivan 2017-01-08 10:02:20

j'ai écrit un petit script Python qui peut exporter des feuilles de travail en UTF-8.

il vous suffit de fournir le fichier Excel comme premier paramètre suivi des feuilles que vous souhaitez exporter. Si vous ne fournissez pas les feuilles, le script exportera toutes les feuilles de travail qui sont présentes dans le fichier Excel.

#!/usr/bin/env python

# export data sheets from xlsx to csv

from openpyxl import load_workbook
import csv
from os import sys

reload(sys)
sys.setdefaultencoding('utf-8')

def get_all_sheets(excel_file):
    sheets = []
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    all_worksheets = workbook.get_sheet_names()
    for worksheet_name in all_worksheets:
        sheets.append(worksheet_name)
    return sheets

def csv_from_excel(excel_file, sheets):
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    for worksheet_name in sheets:
        print("Export " + worksheet_name + " ...")

        try:
            worksheet = workbook.get_sheet_by_name(worksheet_name)
        except KeyError:
            print("Could not find " + worksheet_name)
            sys.exit(1)

        your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
        wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
        for row in worksheet.iter_rows():
            lrow = []
            for cell in row:
                lrow.append(cell.value)
            wr.writerow(lrow)
        print(" ... done")
    your_csv_file.close()

if not 2 <= len(sys.argv) <= 3:
    print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
    sys.exit(1)
else:
    sheets = []
    if len(sys.argv) == 3:
        sheets = list(sys.argv[2].split(','))
    else:
        sheets = get_all_sheets(sys.argv[1])
    assert(sheets != None and len(sheets) > 0)
    csv_from_excel(sys.argv[1], sheets)
2
répondu Julian 2017-02-06 11:46:19

Excel enregistre typiquement un fichier csv comme encodage ANSI au lieu de utf8.

une option pour corriger le fichier est D'utiliser le bloc-notes ou le bloc-notes++:

  1. ouvrir le .csv avec bloc-notes ou bloc-notes++.
  2. Copiez le contenu dans votre presse-papiers.
  3. Supprimer le contenu du fichier.
  4. Change le codage du fichier en utf8.
  5. coller le contenu de retour à partir du presse-papiers.
  6. Enregistrer le fichier.
2
répondu Jason Williams 2017-11-28 15:13:56

encodage - > convertir en Ansi l'encodera EN ANSI / UNICODE. Utf8 est un sous-ensemble D'Unicode. Peut-être que dans ANSI sera codé correctement, mais nous parlons ici de UTF8, @SequenceDigitale.

il y a des moyens plus rapides, comme exporter en csv ( délimité par une virgule ) et ensuite, ouvrir ce csv avec Notepad++ ( libre ), puis Encoder > convertir en UTF8. Mais seulement si vous devez le faire une fois par fichier. Si vous avez besoin de changer et d'exporter féquemment, alors le meilleur est LibreOffice ou la solution de GDocs.

1
répondu Lucas 2012-06-07 08:31:06

Microsoft Excel a une option pour exporter tableur en utilisant le codage Unicode. Voir la capture d'écran suivante.

enter image description here

1
répondu vladaman 2012-07-10 15:22:00

ouvert .csv très bien avec le bloc-notes++. si vous voyez que votre encodage est bon (vous voyez tous les caractères comme ils devraient être) Appuyez sur encodage , puis convertissez en ANSI else-Découvrez quel est votre encodage actuel

1
répondu Marius Gri 2012-09-18 06:08:41

une autre solution est d'ouvrir le fichier par winword et de le sauvegarder sous txt, puis de le rouvrir par excel et il fonctionnera ISA

1
répondu Essam Altantawi 2012-11-02 04:04:57

Enregistrer La Boîte De Dialogue > Bouton Outils > Options Internet > Onglet Encodage

1
répondu Elia Weiss 2015-03-16 16:24:29

tombé sur le même problème et googlé ce post. Rien de ce qui précède n'a fonctionné pour moi. J'ai enfin converti mon Unicode .xls .xml (choisir Enregistrer sous ... XML Spreadsheet 2003) et il a produit le caractère correct. Puis j'ai écrit du code pour analyser le xml et le contenu extrait pour mon usage.

1
répondu Silent Sojourner 2015-09-01 15:57:16

une autre façon est d'ouvrir le fichier CSV UTF-8 dans Notepad où il sera affiché correctement. Puis remplacez tous les", " par des onglets. Coller tout cela dans un nouveau fichier excel.

0
répondu Martin 2012-06-20 08:18:45

j'ai le même problème et suis tombé sur ce ajouter , et il fonctionne parfaitement bien dans excel 2013 à côté d'excel 2007 et 2010 qu'il est mentionné pour.

0
répondu academic.user 2015-01-28 18:10:22