Excel zu CSV mit UTF8-Codierung [geschlossen]


607

Ich habe eine Excel-Datei mit einigen spanischen Zeichen (Tildes usw.), die ich in eine CSV-Datei konvertieren muss, um sie als Importdatei zu verwenden. Wenn ich jedoch Als CSV speichern, werden die "speziellen" spanischen Zeichen, die keine ASCII-Zeichen sind, beschädigt. Dies scheint auch mit den linken und rechten Anführungszeichen und langen Strichen zu tun zu haben, die anscheinend vom ursprünglichen Benutzer stammen, der die Excel-Datei auf dem Mac erstellt hat.

Da es sich bei CSV nur um eine Textdatei handelt, kann sie sicher eine UTF8-Codierung verarbeiten. Ich vermute, dass dies eine Excel-Einschränkung ist, suche jedoch nach einer Möglichkeit, von Excel zu CSV zu gelangen und die Nicht-ASCII-Zeichen beizubehalten intakt.


15
Ich habe diese Frage gesehen, bevor ich sie gepostet habe, aber es geht darum, bereits eine UTF8-CSV zu haben und sie in Excel zu öffnen, nicht umgekehrt.
Jeff Treuting

7
Die folgenden Antworten scheinen zu funktionieren, aber sie sind nur Problemumgehungen. Weiß jemand, wie man Excel dazu bringt?
NielW

2
Ich wollte meine 2 Cent fallen lassen: Nach vielen Versuchen und Versuchen, VBA-Funktionen zu verwenden, usw. (ich verwende Excel 97 aus verschiedenen Gründen) ... einfach Speichern unter "CSV (MSDOS)" "Format hat dieses Problem für mich behoben. In meinem Fall werden die CSV-Daten des Citrix-Webinars (GotoWebinar) mit Zeichen versehen, die einen Apex-Code auf unserer Seite beschädigen. Wenn ich sie in "CSV (MSDOS)" speichere, lade ich (zuvor) den CSV-Export in Notepad ++ und füge ihn in ein UTF ein. 8 leere Datei und erneutes Speichern. :-P :-)
AMM

2
Dies ist eine sehr ärgerliche Excel-Einschränkung. Ich habe eine Anfrage zu einem Uservoice-Feature zu diesem Thema geöffnet: excel.uservoice.com/forums/… . Stimmen Sie ab und machen Sie es möglich
Doron Yaacoby,

7
Laut Excel Uservoice hat Microsoft im letzten Monat mit der Arbeit an UTF-8 für .csv begonnen. excel.uservoice.com/forums/…
moloko

Antworten:


405

Eine einfache Problemumgehung ist die Verwendung von Google Spreadsheet. Einfügen (Werte nur, wenn Sie komplexe Formeln haben) oder das Blatt importieren, dann CSV herunterladen. Ich habe nur ein paar Charaktere ausprobiert und es funktioniert ziemlich gut.

HINWEIS: Für Google Sheets gelten beim Import Einschränkungen. Siehe hier .

HINWEIS: Achten Sie bei Google Sheets auf vertrauliche Daten.

BEARBEITEN: Eine weitere Alternative - im Grunde verwenden sie VB-Makros oder Add-Ins, um das Speichern als UTF8 zu erzwingen. Ich habe keine dieser Lösungen ausprobiert, aber sie klingen vernünftig.


63
Vielleicht könnte Joel Slotsky (ehemaliger Premierminister von Excel) ihnen seinen jahrzehntealten Beitrag über das absolute Minimum senden, das jeder Softwareentwickler unbedingt über Unicode und Zeichensätze wissen muss ?
Indolering

8
Mit dem normalen Windows-Editor (mit Speichern unter und dann mit utf-8 in der Codierungsoption) hat es für mich funktioniert. Für mich ist dies der beste Ansatz, da dies von Benutzern durchgeführt werden muss, die keine Administratorrechte auf ihren Computern haben. Daher ist die Installation zusätzlicher Software nicht erforderlich.
Fer

9
OpenOffice JustWorks (tm) ohne Probleme - ich denke, es sollte enthalten sein
Rbjz

9
Uhhh. Ich hatte gerade einen Schauer im Rücken. Was ist, wenn Ihre Excel-Datei 200.000 Zeilen enthält? Oder enthält es vertrauliche Daten, die Sie nicht in einen Excel-Spreadsheat aufnehmen möchten? Verwenden Sie bei Bedarf Openoffice / Libreoffice.
Seb

2
Was ist, wenn die Dateigröße groß ist? Wenn ich mich richtig erinnere, hat das Goolge-Blatt eine Größenbeschränkung von 75 m. Ich habe eine Datei ist 700M
News_is_Selection_Bias

133

Ich habe OpenOffice gefunden , dass die Tabellenkalkulationsanwendung Calc von wirklich gut mit CSV-Daten umgehen kann.

Klicken Sie im Dialogfeld "Speichern unter ..." auf "Formatoptionen", um verschiedene Codierungen für CSV abzurufen. LibreOffice funktioniert genauso wie AFAIK.

calc save dialog


Ich bin mir sicher, dass dies funktioniert. Ich habe OpenOffice einfach noch nicht, sodass Google Text & Tabellen in meiner Situation einfacher war. aber danke für den Vorschlag
Jeff Treuting

19
OpenOffice Calc bietet mehr und bessere Optionen zum Öffnen und Speichern von "CSV" -Dateien (Feldtrennzeichen, Codierung usw.) als Google Text & Tabellen und Excel. Außerdem leidet Google Text & Tabellen derzeit unter einem Limit von 400.000 Zellen pro Tabelle, was OpenOffice Calc nicht tut.
Christian Davén

3
Ich kann bestätigen, dass LibreOffice auch funktioniert: Es bietet Zeichencodierungsoptionen beim Export, die in Excel leider fehlen.
Rupert Rawnsley

1
Dies ist eine großartige Option für diejenigen, die mit sensiblen Daten arbeiten. Die OpenOffice-Suite kann eine tragbare Installation für Benutzer mit gesperrten Computern sein.
Nathan

119
  1. Speichern Sie die Excel-Tabelle als "Unicode-Text (.txt)". Die gute Nachricht ist, dass alle internationalen Zeichen in UTF16 sind (Hinweis, nicht in UTF8). Die neue Datei "* .txt" ist jedoch durch TAB und nicht durch Kommas getrennt und daher keine echte CSV.

  2. (optional) Wenn Sie keine durch TAB getrennte Datei für den Import verwenden können, verwenden Sie Ihren bevorzugten Texteditor und ersetzen Sie die TAB-Zeichen durch Kommas ",".

  3. Importieren Sie Ihre * .txt-Datei in die Zielanwendung. Stellen Sie sicher, dass das UTF16-Format akzeptiert wird.

Wenn UTF-16 ordnungsgemäß mit Unterstützung für Nicht-BMP-Codepunkte implementiert wurde, können Sie eine UTF-16-Datei in UTF-8 konvertieren, ohne Informationen zu verlieren. Ich überlasse es Ihnen, Ihre Lieblingsmethode zu finden.

Ich verwende dieses Verfahren, um Daten aus Excel in Moodle zu importieren.


5
Endlich etwas, das funktioniert hat! Versuchte die obigen Excel-Optionen in Excel 2013 ohne Erfolg. Ich habe gerade auf \ t als geteiltes Zeichen umgestellt, als ich es analysiert habe und es hat perfekt funktioniert!
Mattias Lindberg

1
Muss ein XLS als CSV exportieren, um es in MySQL zu importieren. Mit Excel 2003 habe ich im Format "Unicode Text (.txt)" exportiert, dann Notepad ++ verwendet, um das TAB durch zu ersetzen ;, und dann die txt-Datei in phpmyadmin mit dem Standard "Zeichensatz der Datei: utf-8", Format "CSV" importiert mit LOAD DATA ". Die gesamte Codierung wurde korrekt übertragen.
Kai Noack

3
Vielen Dank. Das macht Sinn. Warum MS sich immer noch weigert, UTF als Standard zu verwenden, ist mir ein Rätsel.
Oskar Limka

4
@OskarLimka: Wenn du "UTF" sagst, meinst du UTF-8 oder UTF-16? Weil Microsoft UTF-16 ziemlich oft verwendet.
Flimm

7
"Die gute Nachricht ist, dass alle internationalen Zeichen in UTF16 sind (Anmerkung, nicht in UTF8)." : völliger Unsinn . UTF-8 und UTF-16 sind zwei Möglichkeiten, um den gesamten Satz von Unicode-Codepunkten zu codieren.

43

Ich weiß, dass dies eine alte Frage ist, aber ich bin zufällig auf diese Frage gestoßen, als ich mit den gleichen Problemen wie das OP zu kämpfen hatte.

Nachdem ich keine der angebotenen Lösungen für eine praktikable Option befunden hatte, machte ich mich daran herauszufinden, ob es eine Möglichkeit gibt, dies nur mit Excel zu tun.

Glücklicherweise habe ich festgestellt, dass das Problem mit verlorenen Zeichen (in meinem Fall) nur beim Speichern vom XLSX-Format in das CSV-Format auftritt. Ich habe versucht, die xlsx-Datei zuerst in xls und dann in csv zu speichern. Es hat tatsächlich funktioniert.

Bitte probieren Sie es aus und sehen Sie, ob es für Sie funktioniert. Viel Glück.


3
Für mich unter Excel für Mac 2011 funktioniert dies jedoch nur, wenn ich dies wähle Windows comma separated (CSV). Es funktioniert nicht, wenn ich die Standard- oder DOS-CSV-Optionen verwende - beide ersetzen die akzentuierten Zeichen durch zufällige Junk-Zeichen. Getestet für Zeichen inklusive é, è, â... Sie wissen nicht, ob es wirklich UTF8 ist aber die Zeichen sind nicht verstümmelt.
user56reinstatemonica8

12
Schnelle Bestätigung - Die mit dieser Methode unter (Excel für Mac 2011) erstellten Dateien erzeugen keine UTF-8-CSVs, ABER sie erzeugen CSVs, die mindestens die richtigen Zeichen enthalten und daher in einem Texteditor problemlos in UTF8 konvertiert werden können Dies ist ein großer Schritt vorwärts gegenüber dem lächerlichen, verstümmelten Müll, den Excel standardmäßig ausspuckt.
user56reinstatemonica8

Ja, stimmte zu, das hat auch bei mir funktioniert (Excel Mac 2011) und es verdient wirklich mehr Upvotes.
cbmanica

1
Dies hat bei mir nicht ganz funktioniert (mit Excel 2007). Ich hatte 2 Nicht-ASCII-Zeichen in meiner Datei und eines davon wurde auf diese Weise in Ordnung gespeichert, das andere nicht.
EM0

1
Beachten Sie, dass sich die resultierende CSV-Datei in UTF-16 befindet und nicht in UTF-8 als gestellte Frage.
Flimm

38

Sie können den Befehl iconv unter Unix verwenden (auch unter Windows als libiconv verfügbar) ).

Nach dem Speichern als CSV unter Excel in die Befehlszeile setzen:

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

(Denken Sie daran, cp1250 durch Ihre Codierung zu ersetzen).

Funktioniert schnell und hervorragend für große Dateien wie die Postleitzahlendatenbank, die nicht in GoogleDocs importiert werden können (maximal 400.000 Zellen).


5
Dies ist nutzlos, wenn Ihr Inhalt Zeichen enthält, die 1250 nicht codiert werden können. Besser wäre es, als "Unicode .txt" in Excel zu exportieren und iconv zum Konvertieren von Utf16 zu verwenden. Vielleicht auch ein sedoder trvon '\ t' nach ',' übersetzen
Sebastian

5
Die Standardcodierung von Excel scheint CP858 beim Speichern als CSV oder MS-DOS CSV und Windows 1252 beim Speichern als Windows CSV zu sein (wie in Excel für Mac 2011 getestet).
Claymation

4
Ich stimme voll und ganz zu, dass dies nutzlos ist, da Excel beim Speichern im CSV-Format Informationen verliert, wenn es um Unicode-Codepunkte geht, die nicht in einer Ein-Byte-pro-Code-Punkt-Codierung codiert werden können.
Flimm

26

Sie können dies auf einem modernen Windows-Computer ohne Software von Drittanbietern tun. Diese Methode ist zuverlässig und verarbeitet Daten, die Kommas in Anführungszeichen, Tabulatorzeichen in Anführungszeichen, CJK-Zeichen usw. enthalten.

1. Speichern Sie aus Excel

Speichern Sie in Excel die Daten unter file.txtVerwendung des Typs Unicode Text (*.txt).

2. Starten Sie PowerShell

Führen Sie powershellaus dem Startmenü.

3. Laden Sie die Datei in PowerShell

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

4. Speichern Sie die Daten als CSV

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation

2
Diese Methode funktionierte perfekt für eine CSV-Datei mit über 15.000 Datensätzen mit Zeilen von mehr als 1024 Zeichen, die von Notepad festgelegt wurden. Dauert Sekunden und verwendet keine Software von Drittanbietern. Vielen Dank!
Absoluter

Ahh, selbst als ich versuchte, Google Sheets zu verwenden, stieß ich auf dasselbe Problem. Vielleicht hätte diese PowerShell-Strategie also funktioniert. Hier war mein Problem. Für bestimmte Zeichen wie bestimmte Emojis müssen Sie CHARACTER SET utf8mb4wie hier beschrieben verwenden: stackoverflow.com/a/10959780/470749
Ryan

1
@ Ryan Dieses Problem ist spezifisch für MySQL. Ich habe gerade das problematische Zeichen in dieser Frage ausprobiert und es hat sowohl in Excel als auch in PowerShell gut funktioniert.
Don Cruickshank

24

Der einzige "einfache Weg", dies zu tun, ist wie folgt. Stellen Sie zunächst fest, dass es einen Unterschied zwischen dem, was angezeigt wird, und dem, was in der Excel-CSV-Datei verborgen bleibt, gibt.

  1. Öffnen Sie eine Excel-Datei, in der Sie die Informationen haben (.xls, .xlsx).
  2. Wählen Sie in Excel "CSV (Comma Delimited) (* .csv) als Dateityp und speichern Sie als diesen Typ.
  3. Öffnen Sie in NOTEPAD (unter "Programme" und dann "Zubehör" im Startmenü) die gespeicherte CSV-Datei im Editor
  4. Wählen Sie dann -> Speichern unter ... und am unteren Rand des Felds "Speichern unter" befindet sich ein Auswahlfeld mit der Bezeichnung "Codierung". Wählen Sie UTF-8 (verwenden Sie NICHT ANSI oder Sie verlieren alle Akzente usw.). Speichern Sie die Datei nach Auswahl von UTF-8 unter einem etwas anderen Dateinamen als das Original.

Diese Datei befindet sich in UTF-8 und behält alle Zeichen und Akzente bei. Sie kann beispielsweise in MySQL und andere Datenbankprogramme importiert werden.

Diese Antwort stammt aus diesem Forum .


9
Dies ist aufgrund von Schritt 2, Speichern als CSV, falsch. Das Problem dabei ist, dass Excel die CSV-Datei in cp1252 speichert, einer Codierung mit einem Byte pro Codepunkt. Dies führt zu Informationsverlust für die Zeichen, die nicht in ein Byte passen.
Flimm

Es hat bei mir funktioniert, aber ich kann nicht verstehen warum. Meine von Javascript generierte Datei wird in Excel immer falsch gelesen (als andere Codierung). Aber wenn ich im Editor öffne und als utf-8 speichere, funktioniert es gut! Es sieht also so aus, als ob es Metadaten mit der Codierung gibt. Wie es funktioniert? Wenn der Editor UTF-8-CSV-Dateien speichern und Excel sie lesen kann, ist es in meinem Programm möglich, korrekte UTF-8-CSV-Dateien zu generieren, die Excel lesen kann?
Felipeaf

Hat für mich gearbeitet. In einem von Access konvertierten XSLX. Diakritika und Nur-LF- und ISO-Datumsformate sind in Ordnung. Der eine oder andere funktionierte nicht mit populäreren Lösungen.
RolfBly

21

Eine andere, die ich nützlich gefunden habe: " Numbers " ermöglicht Codierungseinstellungen beim Speichern als CSV.


8
^ Es ist eine Anwendung in Mac OSX
Sruit A.Suk

Seien Sie auch vorsichtig mit Numbers, da die Anzahl der Zeilen begrenzt ist und ich Daten wie diese konvertiert habe, bevor ich nicht bemerkt habe, dass einige davon abgeschnitten wurden. Excel / CSV hat viel höhere Grenzen.
MrE

14

"nevets1219" hat Recht mit Google-Dokumenten. Wenn Sie die Datei jedoch einfach "importieren", wird sie häufig nicht in UTF-8 konvertiert.

Wenn Sie die CSV-Datei jedoch in eine vorhandene Google-Tabelle importieren, wird sie in UTF-8 konvertiert.

Hier ist ein Rezept:

  • Klicken Sie im Hauptbildschirm für Dokumente (oder Laufwerke) auf die Schaltfläche "Erstellen" und wählen Sie "Tabellenkalkulation".
  • Wählen Sie im Menü "Datei" die Option "Importieren".
  • Klicken Sie auf "Datei auswählen".
  • Wählen Sie "Tabelle ersetzen".
  • Wählen Sie das Zeichen aus, das Sie als Trennzeichen verwenden
  • Klicken Sie auf "Importieren"
  • Wählen Sie im Menü "Datei" die Option "Herunterladen als" -> CSV (aktuelles Blatt).

Die resultierende Datei befindet sich in UTF-8


2
Das Problem mit dieser Antwort ist, wie Sie die CSV-Datei überhaupt generiert haben. Wenn Sie dies getan haben, indem Sie das Speichern als CSV in Excel vereinfacht haben, befindet sich die CSV-Datei in cp1252, einer Codierung mit einem Byte pro Codepunkt. Dies führt zu Informationsverlust bei Zeichen, die nicht in ein Byte passen.
Flimm

Nun, das ist ein Problem mit jeder dieser Antworten. Und wird mit jeder Antwort auf die Konvertierung in UTF-8 sein, da es keine Möglichkeit gibt, die ursprüngliche Codierung zu kennen oder zu steuern.
RedYeti

1
Einige der Antworten sprechen darüber, wie man dieses Problem umgehen kann
Flimm

13

Verwenden von Notepad ++

Dadurch wird die von Excel gespeicherte beschädigte CSV-Datei behoben und in der richtigen Codierung erneut gespeichert.

  • CSV aus Excel exportieren
  • In Notepad ++ laden
  • Codierung korrigieren
  • speichern

Excel speichert in CP-1252 / Windows-1252. Öffnen Sie die CSV-Datei in Notepad ++. Wählen

Encoding > Character Sets > Western European > Windows-1252

Dann

Encoding > Convert to UTF-8
File > Save

Teilen Sie Notepad ++ zuerst die Codierung mit und konvertieren Sie dann . Einige dieser anderen Antworten werden konvertiert, ohne zuerst die richtige Codierung festzulegen, wodurch die Datei noch mehr entstellt wird. Sie würden drehen , was sein sollte in . Wenn Ihr Charakter nicht in CP-1252 passt, ging er bereits verloren, als er als CSV gespeichert wurde. Verwenden Sie dafür eine andere Antwort.


Ich kann das falsch verstehen, aber Sie können die Datei in Notepad ++ nicht als ".csv" speichern, und darum geht es hier.
Daniel Maurer

1
Ja, du kannst. Sie speichern nur eine Textdatei und .csvsind eine Textdatei. Diese Antwort öffnet die von Excel beschädigte CSV-Datei, korrigiert sie und speichert sie mit der richtigen Codierung erneut.
Chloe

Was Sie kommunizieren, hat weitreichende Konsequenzen. Mit dieser hervorragenden Methode können wir eine höhere Datenqualität erzielen! Bravo! (Quiz: Warum ist dieser Kommentar so fragend?)
Thymaro

9

Unter Excel 2016 und höher (einschließlich Office 365) gibt es eine CSV-Option für das UTF-8-Format.

Führen Sie in Office 365 Speichern unter aus. Wo früher möglicherweise CSV (durch Kommas getrennt) ausgewählt wurde, können Sie jetzt als einen der Dateitypen CSV UTF-8 (durch Kommas getrennt) (* .csv) speichern.


1
Sie sollten einige Anweisungen zur Verwendung dieser Option geben.
Rovyko

1
@dexgecko sicher: Es heißt "Speichern" Button / Menü. Es gibt jetzt vier CSV- Exporttypen in Excel 2016 unter Windows: CSV wird als "ANSI" gespeichert (mehr oder weniger äquivalent zu Latin1, aber das kann bei einer nicht-westlichen Betriebssysteminstallation anders sein, da bin ich mir nicht sicher), UTF-8 CSV speichert als UTF-8 mit Stückliste, CSV (DOS) speichert als CP850 (wiederum hängt dies möglicherweise von der Installation ab?) und CSV (Mac) speichert als MacRoman.

Excel kann jedoch nur UTF-8- und ANSI-CSV-Dateien lesen (Excel kann die Stückliste zur Auswahl verwenden). Um aus einer anderen Codierung zu importieren, benennen Sie sie in .txt um, öffnen Sie sie aus Excel (Sie haben dann eine lange Liste von Codierungen zur Auswahl) und verwenden Sie die Schaltfläche "Konvertieren", um die Zeilen zu teilen, da das Trennzeichen nicht richtig interpretiert wird. Sie können diesen Trick auch verwenden, wenn Sie eine CSV aus einer anderen Sprachkonvention importieren (in Französisch ist das Trennzeichen beispielsweise ein Semikolon, da das Komma bereits als Dezimaltrennzeichen verwendet wird).

1
@ Jean-ClaudeArbaut Seltsam, ich sehe keine UTF-8 CSV-Option in meinem Excel 2016.
Rovyko

1
@dexgecko Seltsam, in der Tat. Laut dieser Seite (auf Französisch, sorry) wurde die Funktionalität im November 2016 in der Build-Version 1610 hinzugefügt. Ich habe derzeit die 1802-Version. Ich dachte jedoch, dass nur Office 365 diese Art von Entwicklungen hat, und ich verwende Office Pro 2016 (nicht die 365-Variante). Versuchen Sie möglicherweise, Ihr Office zu aktualisieren.

8

Für diejenigen, die nach einer vollständig programmatischen (oder zumindest serverseitigen) Lösung suchen, habe ich mit dem xls2csv-Tool von catdoc große Erfolge erzielt.

Installieren Sie catdoc:

apt-get install catdoc

Konvertierung durchführen:

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

Das ist blitzschnell.

Beachten Sie, dass es wichtig ist, dass Sie das -d utf-8Flag einschließen , da sonst die Ausgabe standardmäßig codiert wirdcp1252 codiert, und Sie laufen Gefahr, Informationen zu verlieren.

Beachten Sie, dass dies xls2csvauch nur mit .xlsDateien funktioniert, nicht mit .xlsxDateien.


Oder wählen Sie eine andere
Ausgabecodierung

2
Ich weiß, dass es unglücklich ist, aber Tatsache ist, dass diese Antwort einigen Benutzern Probleme bereiten wird . Die Tatsache, dass Sie dies immer nur mit Zeichen ausgeführt haben, die in cp1252 passen, ist nur ein Glücksfall. Sie haben in der Antwort keine Warnung vor diesem Risiko angegeben. Sie haben nur gesagt, dass es "ohne Probleme funktioniert". Sie wurden nicht gebeten, alle Probleme zu beheben, sondern nur die OPs, die viele Menschen teilen.
Flimm

1
Los geht's, ich habe das Problem im Antwortbeitrag behoben und die Abwertung entfernt.
Flimm

7

Was ist mit Powershell?

Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8

1
Der Text von nicht-ASCII-spanischen Zeichen wird vom ursprünglichen spanischen Zeichen in die von ANSI verwendete Codierungszeichenfolge geändert. Der Text stimmt also nicht mit dem Original überein.
Jason Williams

7

Einfachster Weg: Keine Notwendigkeit Öffnen Sie Office- und Google Docs

  1. Speichern Sie Ihre Datei als "Unicode-Textdatei".
  2. Jetzt haben Sie eine Unicode-Textdatei
  3. Öffnen Sie es mit "Notepad" und "Speichern unter", indem Sie "utf-8" oder eine andere gewünschte Codepage auswählen
  4. Benennen Sie die Dateierweiterung von "txt" in "csv" um. Dies führt zu einer durch Tabulatoren getrennten UTF-8-CSV-Datei.
  5. Wenn Sie eine durch Kommas getrennte Datei wünschen, öffnen csvSie die gerade umbenannte Datei und ersetzen Sie alle Registerkarten durch Kommas. Wählen Sie dazu in Notepad unter Win 10 einfach ein Registerkartenfeld aus und klicken Sie auf Ctrl+H. Geben Sie im folgenden Fenster ein Komma ,in das Feld "Ersetzen durch" ein und klicken Sie auf "Alle ersetzen". Speichern Sie Ihre Datei. Das Ergebnis ist eine durch Kommas getrennte UTF-8-CSV-Datei.

Öffne es sowieso nicht mit MS-Office !!! Jetzt haben Sie eine tabulatorgetrennte CSV-Datei. Oder durch Kommas getrennt, wenn Sie Schritt 5 angewendet haben.


2
Für eine tabulatorgetrennte Datei ist es möglicherweise besser, eine .txtErweiterung zu verwenden. csv, dh durch Kommas getrennte Dateien, ist nur verwirrend.
dof1985

5

So lustig es auch scheinen mag, der einfachste Weg, meine 180-MB-Tabelle in einer UTF8-CSV-Datei zu speichern, bestand darin, die Zellen in Excel auszuwählen, sie zu kopieren und den Inhalt der Zwischenablage in SublimeText einzufügen.


1
Dies funktioniert, da Excel eine TSV- Version der Auswahl über die Zwischenablage bereitstellt . Sie können Notepad auch anstelle von SublimeText verwenden, aber denken Sie daran, in diesem Fall mit UTF-8-Codierung zu speichern!
Don Cruickshank


3

Unter der Annahme einer Windows-Umgebung können Sie die Datei wie gewohnt in Excel speichern und bearbeiten. Öffnen Sie dann die gespeicherte Excel-Datei in Gnome Gnumeric (kostenlos). Speichern Sie die Tabelle von Gnome Gnumeric als CSV, die - für mich jedenfalls - als UTF-8-CSV gespeichert wird.


3

Einfache Möglichkeit: Laden Sie open office ( hier ) herunter , laden Sie die Tabelle und öffnen Sie die Excel-Datei ( .xlsoder .xlsx). Speichern Sie es dann einfach als Text-CSV-Datei und ein Fenster wird geöffnet, in dem Sie aufgefordert werden, das aktuelle Format beizubehalten oder als ODF-Format zu speichern. Wählen Sie "Aktuelles Format beibehalten" und wählen Sie im neuen Fenster die Option aus, die für Sie besser geeignet ist, je nachdem, in welcher Sprache Ihre Datei geschrieben wurde. Wählen Sie für die spanische Sprache Westeuropa ( Windows-1252/ WinLatin 1) und die Datei funktioniert einwandfrei. Wenn Sie Unicode ( UTF-8) auswählen , funktioniert es nicht mit den spanischen Zeichen.


3
Es gibt keinen Grund, warum UTF-8 nicht mit spanischen Zeichen funktioniert.
Flimm

3
  1. Speichern Sie die XLS-Datei (Excel-Datei) als Unicode-Text => Die Datei wird im Textformat (.txt) gespeichert.

  2. Ändern Sie das Format von .txt in .csv (benennen Sie die Datei von XYX.txt in XYX.csv um


3
Dies funktioniert nicht, da Ihre Anweisungen nicht den erforderlichen Schritt zum Konvertieren von Registerkarten in Kommas in den Dateidaten enthalten.
Matthew Rodatus

1
Der "Unicode-Text" von Excel ist UTF-16, nicht UTF-8, wie in der Frage gefordert.
Flimm

3

Ich bin auch auf das gleiche Problem gestoßen, aber es gibt eine einfache Lösung dafür.

  1. Öffnen Sie Ihre XLSX-Datei in Excel 2016 oder höher.
  2. Wählen Sie unter "Speichern unter" die folgende Option: "(CSV UTF-8 (durch Kommas getrennt) *. CSV)"

Es funktioniert einwandfrei und es wird eine CSV-Datei generiert, die in jede Software importiert werden kann. Ich habe diese CSV-Datei in meine SQLITE-Datenbank importiert und sie funktioniert einwandfrei, wenn alle Unicode-Zeichen intakt sind.


Diese Option ist in meiner Kopie von Excel 2016 nicht verfügbar. Verwenden Sie die Office 365-Version?
Don Cruickshank

2

Kam auf das gleiche Problem und googelte diesen Beitrag. Keines der oben genannten hat bei mir funktioniert. Zuletzt habe ich meine Unicode .xls in .xml konvertiert (wählen Sie Speichern unter ... XML Spreadsheet 2003) und es wurde das richtige Zeichen erzeugt. Dann schrieb ich Code, um die XML zu analysieren und den Inhalt für meine Verwendung zu extrahieren.


2

Ich habe ein kleines Python-Skript geschrieben, das Arbeitsblätter in UTF-8 exportieren kann.

Sie müssen nur die Excel-Datei als ersten Parameter angeben, gefolgt von den Blättern, die Sie exportieren möchten. Wenn Sie die Blätter nicht bereitstellen, exportiert das Skript alle Arbeitsblätter, die in der Excel-Datei vorhanden sind.

#!/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)

Ich habe die Implementierung ein wenig aktualisiert und ein Gist erstellt. Gist.github.com/julianthome/2d8546e7bed869079ab0f409ae0faa87
Julian

2

Excel speichert normalerweise eine CSV-Datei als ANSI-Codierung anstelle von utf8.

Eine Möglichkeit, die Datei zu korrigieren, ist die Verwendung von Notepad oder Notepad ++:

  1. Öffnen Sie die CSV-Datei mit Notepad oder Notepad ++.
  2. Kopieren Sie den Inhalt in Ihre Computer-Zwischenablage.
  3. Löschen Sie den Inhalt aus der Datei.
  4. Ändern Sie die Codierung der Datei in utf8.
  5. Fügen Sie den Inhalt wieder aus der Zwischenablage ein.
  6. Speicher die Datei.

Sie sind sich bei alten Versionen von NP ++ nicht sicher, aber in der aktuellen Version können Sie einfach Codierung> In UTF-8 konvertieren auswählen. ersetzt die Schritte 2-5
Felk

1

Eine zweite Option für "nevets1219" besteht darin, Ihre CSV-Datei in Notepad ++ zu öffnen und eine Konvertierung in ANSI durchzuführen.

Wählen Sie im oberen Menü: Codierung -> In Ansi konvertieren


Keine Ahnung, warum du herabgestimmt wurdest. Notepad ++ hat es für mich getan. Ich kann meine Datei nicht in Google Spreadsheet speichern, da sie vertraulich ist.
Zane

3
Das Problem bei dieser Antwort ist, wie Sie die CSV-Datei überhaupt generieren. Wenn Sie einfach als CSV aus Excel speichern, lautet die Codierung cp1252, eine Codierung mit einem Byte pro Codepunkt, und verliert daher Informationen für Zeichen, die nicht dazu passen. Außerdem sollten Sie am Ende nach UTF-8 und nicht nach Ansi konvertieren, wenn Sie das tun möchten, wonach die Frage gestellt wurde.
Flimm

Dies ist bei weitem die einfachere Antwort IMO. Ich verwende Excel 2016 und habe festgestellt, dass es standardmäßig in ANSI-Codierung gespeichert ist, habe es aber in UTF-8 integriert, was ich wollte.
Rovyko

1

Codierung -> In Ansi konvertieren wird in ANSI / UNICODE codiert. Utf8 ist eine Teilmenge von Unicode. Vielleicht wird in ANSI korrekt codiert, aber hier geht es um UTF8, @SequenceDigitale.

Es gibt schnellere Möglichkeiten, wie das Exportieren als CSV (durch Kommas getrennt) und das Öffnen dieser CSV mit Notepad ++ (kostenlos) und dann Codierung> In UTF8 konvertieren. Aber nur, wenn Sie dies einmal pro Datei tun müssen. Wenn Sie häufig ändern und exportieren müssen, ist die LibreOffice- oder GDocs-Lösung die beste.


5
"Utf8 ist eine Teilmenge von Unicode": Dies macht keinen Sinn. UTF-8 ist eine Codierung von Unicode.
Jameshfisher

Ich bin nicht sicher, ob ich diese Option "Codierung -> In Ansi konvertieren" finden kann.
Flimm

Durch einfaches ANSI-CSV in Notepad ++ und Ändern der Codierung der Datei in utf8 werden die ursprünglichen spanischen Nicht-ASCII-Zeichen in Codierungszeichenfolgen konvertiert, die nicht mit dem Originaltext übereinstimmen.
Jason Williams

1

Microsoft Excel bietet die Option, Tabellenkalkulationen mithilfe der Unicode-Codierung zu exportieren. Siehe folgenden Screenshot.

Geben Sie hier die Bildbeschreibung ein


14
"Unicode-Text" wird in UTF-16 LE (Little Endian) gespeichert, nicht in UTF-8, wie vom OP gefordert.
Axt.

Ja, aber es ist der beste Weg, um Unicode-Unterstützung für Ihre x-getrennten Werte in Excel zu erhalten. Ich hatte alle möglichen Probleme damit, Excel dazu zu bringen, mit UTF-8 Ball zu spielen! Lesen Sie mehr
mcNux

1

Öffnen Sie .csv gut mit Notepad ++. Wenn Sie feststellen, dass Ihre Codierung gut ist (Sie sehen alle Zeichen so, wie sie sein sollten), drücken Sie die Codierung und konvertieren Sie sie dann in ANSI - finden Sie heraus, wie Ihre aktuelle Codierung lautet


Das hat bei mir funktioniert. Ich hatte ein Problem mit griechischen Zeichen, als ich
meine SQL-Datenbank als CSV

1
Das Problem dabei ist, wie Sie die CSV-Datei überhaupt generieren. Wenn Sie einfach als CSV-Datei in Excel speichern, wird diese in cp1252 gespeichert, einer Codierung mit einem Byte pro Codepunkt, und verliert daher Informationen.
Flimm

1

Eine andere Lösung besteht darin, die Datei per Winword zu öffnen und als txt zu speichern. Anschließend wird sie per Excel erneut geöffnet, und ISA funktioniert


1

Dialogfeld "Speichern"> Schaltfläche "Extras"> Weboptionen> Registerkarte "Codierung"


Das funktioniert bei mir nicht. So wie ich es verstehe, wird es nur beim Speichern als Webformat (HTML usw.) wirksam, nicht beim Speichern als CSV.
Jogojapan

Arbeitet für mich - Büro 2007
Elia Weiss

Ich arbeite nicht an Office 2010 und wähle ein CSV-Profil aus.
Hart

0

Ich habe das gleiche Problem und bin auf dieses Add-In gestoßen, und es funktioniert in Excel 2013 neben Excel 2007 und 2010, für die es erwähnt wird, einwandfrei.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.