it-swarm.com.de

Kann Excel automatisch UTF-8 CSV-Dateien erkennen?

Ich entwickle einen Teil einer Anwendung, der für den Export einiger Daten in CSV-Dateien verantwortlich ist. Die Anwendung verwendet immer UTF-8, da es auf allen Ebenen mehrsprachig ist. Das Öffnen solcher CSV-Dateien (z. B. diakritische Zeichen, kyrillische Buchstaben, griechische Buchstaben) in Excel führt jedoch nicht zu den erwarteten Ergebnissen, die etwas wie Г„/Г¤, Г–/Г¶ anzeigen. Und ich weiß nicht, wie man Excel zwingt, zu verstehen, dass die geöffnete CSV-Datei in UTF-8 codiert ist. Ich habe auch versucht, UTF-8 BOM EF BB BF anzugeben, aber Excel ignoriert dies.

Gibt es eine Problemumgehung?

P.S. Welche Tools verhalten sich möglicherweise wie Excel?


AKTUALISIEREN

Ich muss sagen, dass ich die Community mit der Formulierung der Frage verwechselt habe. Als ich diese Frage stellte, habe ich nach einer Möglichkeit gefragt, eine UTF-8 CSV-Datei in Excel ohne Probleme für einen Benutzer auf flüssige und transparente Weise zu öffnen. Ich habe jedoch eine falsche Formulierung verwendet, um danach zu fragen, automatisch. Das ist sehr verwirrend und kollidiert mit der VBA-Makroautomatisierung. Es gibt zwei Antworten auf diese Fragen, die ich am meisten schätze: die allererste Antwort von Alex https://stackoverflow.com/a/6002338/166589 , und ich habe diese Antwort akzeptiert; und die zweite von Mark https://stackoverflow.com/a/6488070/166589 die etwas später aufgetaucht sind. Aus Sicht der Benutzerfreundlichkeit schien es in Excel anscheinend an einer guten, benutzerfreundlichen UTF-8-CSV-Unterstützung zu mangeln. Daher halte ich beide Antworten für richtig, und ich habe Alexs Antwort zuerst akzeptiert, weil sie das wirklich gesagt hat Excel konnte dies nicht transparent tun. Das habe ich hier mit automatisch verwechselt. Die Antwort von Markus ist eine kompliziertere Methode für fortgeschrittene Benutzer, um das erwartete Ergebnis zu erzielen. Beide Antworten sind großartig, aber Alex 'Antwort passt zu meiner nicht klar spezifizierten Frage etwas besser.


UPDATE 2

Fünf Monate später nach der letzten Bearbeitung habe ich bemerkt, dass Alex 'Antwort aus irgendeinem Grund verschwunden ist. Ich hoffe wirklich, dass es keine technische Frage war und ich hoffe, dass es keine Diskussion mehr gibt, welche Antwort jetzt besser ist. Also akzeptiere ich Marks Antwort als die beste.

356

Alex ist richtig, aber da Sie in csv exportieren müssen, können Sie den Benutzern beim Öffnen der csv-Dateien diesen Hinweis geben:

  1. Speichern Sie die exportierte Datei als csv
  2. Öffnen Sie Excel
  3. Importieren Sie die Daten mit Daten -> Externe Daten importieren -> Daten importieren
  4. Wählen Sie den Dateityp von "csv" und navigieren Sie zu Ihrer Datei 
  5. Ändern Sie im Import-Assistenten File_Origin in "65001 UTF" (oder wählen Sie die richtige Sprachkennung). 
  6. Ändern Sie das Trennzeichen in ein Komma
  7. Wählen Sie aus, wohin importiert und beendet werden soll

Auf diese Weise sollten die Sonderzeichen korrekt angezeigt werden. 

345
Mark

Die Markierung für die UTF-8-Byte-Reihenfolge weist Excel 2007+ darauf hin, dass Sie UTF-8 verwenden. (Siehe this SO post ).

Für den Fall, dass jemand die gleichen Probleme hatte wie ich, gibt die UTF8-Codierungsklasse von .NET keinen Byte-Order-Marker in einem Aufruf von GetBytes() aus. Sie müssen Streams verwenden (oder verwenden Sie eine Problemumgehung ), damit die Stückliste ausgegeben wird.

124

Der Fehler mit der ignorierten Stückliste scheint für Excel 2013 behoben zu sein. Ich hatte das gleiche Problem mit kyrillischen Buchstaben, aber das Hinzufügen des Stücklistenzeichens \uFEFF hat geholfen.

61
sshturma

Es ist unglaublich, dass es so viele Antworten gibt, aber keine beantwortet die Frage: 

"Als ich diese Frage stellte, habe ich nach einem Weg gefragt, wie man eine UTF-8 CSV-Datei in Excel öffnen kann, ohne dass ein Benutzer Probleme hat."

Die Antwort, die als akzeptierte Antwort mit mehr als 200 Up-Votes markiert ist, ist für mich unbrauchbar, da ich meinen Benutzern keine Anleitung zum Konfigurieren von Excel geben möchte.__ Abgesehen davon: Dieses Handbuch gilt nur für eine Excel-Version Andere Excel-Versionen verfügen über unterschiedliche Menüs und Konfigurationsdialogfelder. Sie benötigen für jede Excel-Version ein Handbuch.

Die Frage ist also, wie man mit einem einfachen Doppelklick UTF8-Daten in Excel anzeigen kann?

Zumindest in Excel 2007 ist dies nicht möglich, wenn Sie CSV-Dateien verwenden, da die UTF8-Stückliste ignoriert wird und Sie nur Müll sehen. Dies ist bereits Teil der Frage von Lyubomyr Shaydariv: 

"Ich habe auch versucht, UTF-8 BOM EF BB BF anzugeben, aber Excel ignoriert das."

Ich mache die gleiche Erfahrung: Das Schreiben von russischen oder griechischen Daten in eine UTF8-CSV-Datei mit Stückliste führt zu Papierkorb in Excel:

Inhalt der UTF8-CSV-Datei:

Colum1;Column2
Val1;Val2
Авиабилет;Tλληνικ

Ergebnis in Excel 2007:

 CSV UTF8 Excel

Eine Lösung ist, CSV überhaupt nicht zu verwenden. Dieses Format wird von Microsoft so dumm implementiert, dass es von den Regionseinstellungen in control panel abhängt, wenn comma oder semikolon als Trennzeichen verwendet wird. Die gleiche CSV-Datei wird möglicherweise auf einem Computer ordnungsgemäß geöffnet, auf einem anderen Computer jedoch nicht. "CSV" bedeutet "Comma Getrennte Werte", aber bei einem deutschen Windows muss standardmäßig ein Semikolon als Trennzeichen verwendet werden, während das Komma nicht funktioniert. (Hier sollte SSV = Semikolon-getrennte Werte genannt werden.) CSV-Dateien können nicht zwischen verschiedenen Sprachversionen von Windows ausgetauscht werden. Dies ist ein zusätzliches Problem für das UTF-8-Problem.

Excel existiert seit Jahrzehnten. Es ist eine Schande, dass Microsoft in all den Jahren so grundlegende Dinge wie den CSV-Import nicht implementieren konnte.


Wenn Sie jedoch die gleichen Werte in eine HTML-Datei einfügen und diese Datei als UTF8-Datei mit Stückliste mit der Dateierweiterung XLS speichern, erhalten Sie das korrekte Ergebnis.

Inhalt der UTF8 XLS-Datei:

<table>
<tr><td>Colum1</td><td>Column2</td></tr>
<tr><td>Val1</td><td>Val2</td></tr>
<tr><td>Авиабилет</td><td>Tλληνικ</td></tr>
</table>

Ergebnis in Excel 2007:

 UTF8 HTML Excel

Sie können sogar Farben in HTML verwenden, die in Excel korrekt angezeigt werden.

<style>
.Head { background-color:gray; color:white; }
.Red  { color:red; }
</style>
<table border=1>
<tr><td class=Head>Colum1</td><td class=Head>Column2</td></tr>
<tr><td>Val1</td><td>Val2</td></tr>
<tr><td class=Red>Авиабилет</td><td class=Red>Tλληνικ</td></tr>
</table>

Ergebnis in Excel 2007:

 UTF8 HTML Excel

In diesem Fall hat nur die Tabelle selbst einen schwarzen Rand und Linien. Wenn ALLE Zellen Gitternetzlinien anzeigen sollen, ist dies auch in HTML möglich:

<html xmlns:x="urn:schemas-Microsoft-com:office:Excel">
    <head>
        <meta http-equiv="content-type" content="text/plain; charset=UTF-8"/>
        <xml>
            <x:ExcelWorkbook>
                <x:ExcelWorksheets>
                    <x:ExcelWorksheet>
                        <x:Name>MySuperSheet</x:Name>
                        <x:WorksheetOptions>
                            <x:DisplayGridlines/>
                        </x:WorksheetOptions>
                    </x:ExcelWorksheet>
                </x:ExcelWorksheets>
            </x:ExcelWorkbook>
        </xml>
    </head>
    <body>
        <table>
            <tr><td>Colum1</td><td>Column2</td></tr>
            <tr><td>Val1</td><td>Val2</td></tr>
            <tr><td>Авиабилет</td><td>Tλληνικ</td></tr>
        </table>
    </body>
</html>

Dieser Code erlaubt es sogar, den Namen des Arbeitsblatts anzugeben (hier "MySuperSheet").

Ergebnis in Excel 2007:

 enter image description here

38
Elmue

Wir haben diese Problemumgehung angewendet: 

  1. Konvertieren Sie CSV in UTF-16 
  2. Stückliste am Anfang der Datei einfügen
  3. Tab als Feldtrennzeichen verwenden
34
e-zinc

Hatte die gleichen Probleme mit PHP-generierten CSV-Dateien. Excel hat die Stückliste ignoriert, als das Trennzeichen am Anfang des Inhalts über "sep=,\n" definiert wurde (aber natürlich nach der Stückliste).

Das Hinzufügen einer Stückliste ("\xEF\xBB\xBF") am Anfang des Inhalts und das Setzen des Semikolons als Trennzeichen über fputcsv($fh, $data_array, ";"); führt den Trick aus.

17
Ixtlilton

Ich hatte das gleiche Problem in der Vergangenheit (wie man Dateien erzeugt, die Excel lesen kann und andere Tools auch lesen können). Ich habe TSV anstelle von CSV verwendet, aber das gleiche Problem trat bei den Kodierungen auf.

Ich habe keine Möglichkeit gefunden, Excel von UTF-8 automatisch zu erkennen, und ich war nicht willens/in der Lage, den Benutzern der Dateien komplizierte Anweisungen zum Öffnen zu geben. Also habe ich sie als UTF-16le (mit einer Stückliste) anstelle von UTF-8 codiert. Doppelte Größe, aber Excel kann die Kodierung erkennen. Und sie komprimieren gut, daher ist die Größe selten (aber leider nie) von Bedeutung.

10
Steve Jessop

Alte Frage, aber zum Glück ist die einfachste Lösung:

  1. Öffnen Sie CSV im Editor
  2. Speichern unter -> Wählen Sie die richtige Kodierung
  3. Öffnen Sie die neue Datei
10
Aki

Wie ich auf http://thinkinginsoftware.blogspot.com/2017/12/correctly-generate-csv-that-Excel-can.html gepostet habe: /:

Teilen Sie dem zuständigen Software-Entwickler mit, dass er die CSV generieren soll, um sie zu korrigieren. Als schnelle Problemumgehung können Sie gsed verwenden, um die UTF-8-Stückliste am Anfang der Zeichenfolge einzufügen:

gsed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' file.csv

Dieser Befehl fügt die UTF-4-Stückliste ein, falls diese nicht vorhanden ist. Daher ist es ein idempotenter Befehl. Nun sollten Sie die Datei doppelklicken und in Excel öffnen können.

5
Nestor Urquiza

Sie können die CSV-Datei mit BOM über Notepad ++ in UTF-8 konvertieren:

  1. Öffnen Sie die Datei in Notepad ++ .
  2. Gehen Sie zum Menü EncodingConvert to UTF-8.
  3. Gehen Sie in das Menü FileSave.
  4. Schließen Sie Notepad ++.
  5. Öffnen Sie die Datei in Excel.

Arbeitete in Microsoft Excel 2013 (15.0.5093.1000) MSO (15.0.5101.1000) 64-Bit von Microsoft Office Professional Plus 2013 unter Windows 8.1 mit Gebietsschema für Nicht-Unicode-Programme, die auf "Deutsch (Deutschland)" eingestellt sind.

Dies ist eine alte Frage, die jedoch bei der Suche oben angezeigt wird. Ich habe nach vielen Bemühungen festgestellt, dass das Hinzufügen von BOM-Zeichen am Anfang der CSV-Datei hilfreich ist.

Ich habe es hier kurz erklärt: https://sites.google.com/site/ritechtips/home/the-multi-line-fields-csv-file-and-Excel-import---ha

3

Nur für Benutzer, die daran interessiert sind, die Datei in Excel zu öffnen, die diesen Thread wie ich erreichen.

Ich habe den unten stehenden Assistenten verwendet, und es hat für mich gut funktioniert, eine UTF-8-Datei zu importieren. Nicht transparent, aber nützlich, wenn Sie die Datei bereits haben.

  1. Öffnen Sie Microsoft Excel 2007.
  2. Klicken Sie auf die Menüleiste Daten.
  3. Klicken Sie auf das Symbol Aus Text.
  4. Navigieren Sie zum Speicherort der Datei, die Sie importieren möchten. Klicken Sie auf den Dateinamen und dann auf die Schaltfläche Importieren. Das Fenster Textimport Wizard - Schritt 1 oder 3 wird nun auf dem Bildschirm angezeigt.
  5. Wählen Sie den Dateityp, der Ihre Daten am besten beschreibt - Begrenzte oder Feste Breite.
  6. Wählen Sie 65001: Unicode (UTF-8) aus der Dropdown-Liste neben Dateiursprung aus.
  7. Klicken Sie auf die Schaltfläche Weiter, um das Fenster Textimport Wizard - Schritt 2 oder 3 anzuzeigen.
  8. Setzen Sie ein Häkchen neben dem Trennzeichen, das in der Datei verwendet wurde, die Sie in Microsoft Excel 2007 importieren möchten. Das Datenvorschaufenster zeigt Ihnen, wie Ihre Daten basierend auf dem ausgewählten Trennzeichen aussehen.
  9. Klicken Sie auf die Schaltfläche Weiter, um den Textimport Wizard - Schritt 3 von 3 anzuzeigen.
  10. Wählen Sie für jede zu importierende Datenspalte das geeignete Datenformat aus. Sie haben auch die Möglichkeit, eine oder mehrere Datenspalten nicht zu importieren, wenn Sie möchten.
  11. Klicken Sie auf die Schaltfläche Fertig stellen, um den Import Ihrer Daten in Microsoft Excel 2007 abzuschließen.

Quelle: https://www.itg.ias.edu/content/how-import-csv-file-uses-utf-8-character-encoding-0

Einfaches VBA-Makro zum Öffnen von UTF-8-Text- und CSV-Dateien

Sub OpenTextFile()

   filetoopen = Application.GetOpenFilename("Text Files (*.txt;*.csv), *.txt;*.csv")
   If filetoopen = Null Or filetoopen = Empty Then Exit Sub

   Workbooks.OpenText Filename:=filetoopen, _
   Origin:=65001, DataType:=xlDelimited, Comma:=True

End Sub

Origin: = 65001 ist UTF-8 . Komma: True für CSV-Dateien, die in Spalten verteilt sind

Speichern Sie es in Personal.xlsb, damit es immer verfügbar ist . Passen Sie die Excel-Symbolleiste an, fügen Sie eine Makroaufrufschaltfläche hinzu, und öffnen Sie die Dateien von dort aus.

2
alc

Ja das ist möglich. Wie bereits von mehreren Benutzern festgestellt, scheint es ein Problem zu sein, wenn Excel die korrekte Bytereihenfolge liest, wenn die Datei in UTF-8 codiert ist. Bei UTF-16 scheint es kein Problem zu geben, daher ist UTF-8 endemisch. Die Lösung, die ich dafür verwende, ist das Hinzufügen der Stückliste ZWEIMAL. Dazu führe ich zweimal den folgenden sed-Befehl aus: 

sed -I '1s/^/\xef\xbb\xbf/' *.csv

, wobei der Platzhalter durch einen beliebigen Dateinamen ersetzt werden kann. Dies führt jedoch zu einer Mutation von sep = am Anfang der CSV-Datei. Die CSV-Datei wird dann normalerweise in Excel geöffnet, jedoch mit einer zusätzlichen Zeile mit "sep =" in der ersten Zelle. Das "sep =" kann auch in der Quelle .csv selbst entfernt werden. Beim Öffnen der Datei mit VBA sollte jedoch das Trennzeichen angegeben werden:

Workbooks.Open(name, Format:=6, Delimiter:=";", Local:=True)

Format 6 ist das CSV-Format. Setzen Sie Local auf true, wenn die Datei Datumsangaben enthält. Wenn Local nicht auf true gesetzt ist, werden die Datumsangaben amerikanisiert, was in einigen Fällen das CSV-Format beschädigt. 

1
TheCharlatan

Dies ist meine Arbeitslösung:

vbFILEOPEN = "your_utf8_file.csv"
Workbooks.OpenText Filename:=vbFILEOPEN, DataType:=xlDelimited, Semicolon:=True, Local:=True, Origin:=65001

Der Schlüssel ist Origin: = 65001

1
Nobilis

Eine wirklich erstaunliche Liste von Antworten, aber da noch eine ziemlich gute Antwort fehlt, werde ich sie hier erwähnen: Öffnen Sie die CSV-Datei mit google sheet und speichern Sie sie als Excel-Datei auf Ihrem lokalen Computer.

Im Gegensatz zu Microsoft hat Google es geschafft, UTF-8-csv-Dateien zu unterstützen, sodass die Datei dort nur geöffnet werden kann. Und der Export ins Excel-Format funktioniert auch einfach. Auch wenn dies nicht die bevorzugte Lösung für alle ist, ist es ziemlich ausfallsicher und die Anzahl der Klicks ist nicht so hoch, wie es klingt, vor allem, wenn Sie sowieso bereits bei Google eingeloggt sind.

1
Christoph

Ja, es ist möglich. Wenn Sie den Stream schreiben, der die CSV erstellt, müssen Sie zunächst Folgendes tun:

myStream.Write(Encoding.UTF8.GetPreamble(), 0, Encoding.UTF8.GetPreamble().Length)
1
zax

Dies ist nicht genau auf die Frage ausgerichtet, aber da ich darüber gestolpert bin und die oben genannten Lösungen für mich nicht funktionierten oder Anforderungen hatten, die ich nicht erfüllen konnte, können Sie die Stückliste hinzufügen, wenn Sie auf vim zugreifen:

vim -e -s +"set bomb|set encoding=utf-8|wq" filename.csv
1
CannedMoose

hallo, ich benutze Ruby on Rails für die Generierung von csv. In unserer Anwendung planen wir, sich für die Mehrsprachigkeit (I18n) zu entscheiden, und wir hatten ein Problem, während I18n-Inhalte in der CSV-Datei von Windows Excel angezeigt wurden.

War gut mit Linux (Ubuntu) und Mac.

Wir haben festgestellt, dass Windows Excel die Daten erneut importieren muss, um die tatsächlichen Daten anzuzeigen. Während des Imports erhalten Sie mehr Optionen zur Auswahl des Zeichensatzes.

Dies kann jedoch nicht für jeden Benutzer erlernt werden. Die von uns gesuchte Lösung ist das Öffnen per Doppelklick. 

Dann haben wir die Art und Weise der Darstellung von Daten im offenen Modus und in Windows Excel mit Hilfe von aghuddleston Gist identifiziert. Bei Referenz hinzugefügt.

Beispiel I18n Inhalt

In Mac und Linux

Schwedisch: Förnamn Englisch: Vorname

In Windows

Schwedisch: Förnamn Englisch: Vorname

def user_information_report(report_file_path, user_id)
    user = User.find(user_id)
    I18n.locale = user.current_lang
    open_mode = "w+:UTF-16LE:UTF-8"
    bom = "\xEF\xBB\xBF"
    body user, open_mode, bom
  end

def headers
    headers = [
        "ID", "SDN ID",
        I18n.t('sys_first_name'), I18n.t('sys_last_name'), I18n.t('sys_dob'),
        I18n.t('sys_gender'), I18n.t('sys_email'), I18n.t('sys_address'),
        I18n.t('sys_city'), I18n.t('sys_state'), I18n.t('sys_Zip'),
        I18n.t('sys_phone_number')
    ]
  end

def body tenant, open_mode, bom
    File.open(report_file_path, open_mode) do |f|
      csv_file = CSV.generate(col_sep: "\t") do |csv|
        csv << headers
        tenant.patients.find_each(batch_size: 10) do |patient|
          csv <<  [
              patient.id, patient.patientid,
              patient.first_name, patient.last_name, "#{patient.dob}",
              "#{translate_gender(patient.gender)}", patient.email, "#{patient.address_1.to_s} #{patient.address_2.to_s}",
              "#{patient.city}", "#{patient.state}",  "#{patient.Zip}",
              "#{patient.phone_number}"
          ]
        end
      end
      f.write bom
      f.write(csv_file)
    end
  end

Wichtige Dinge, die hier zu beachten sind, sind offener Modus und bom

open_mode = "w +: UTF-16LE: UTF-8"

bom = "\ xEF\xBB\xBF"

Vor dem Schreiben der CSV-Einfügungsstückliste

f.write bom

f.write (csv_file)

Windows und Mac

Die Datei kann direkt mit einem Doppelklick geöffnet werden.

Linux (Ubuntu)

Beim Öffnen einer Datei fragen Sie nach den Trennzeichen -> wählen Sie "TAB"  enter image description here

1
praaveen

Ich habe alles versucht, was ich in diesem Thread finden konnte und ähnlich, nichts hat voll funktioniert. Das Importieren in Google Sheets und das einfache Herunterladen als CSV-Datei funktionierte jedoch wie ein Zauber. Probieren Sie es aus, wenn Sie zu meinem Frustpunkt kommen.

0
pakalbekim
  1. Laden Sie LibreOffice Calc herunter und installieren Sie es
  2. Öffnen Sie die CSV-Datei Ihrer Wahl in LibreOffice Calc 
  3. Dem Himmel sei Dank, dass ein Import-Text-Assistent angezeigt wird ...
  4. ... wählen Sie Ihre Trennzeichen- und Zeichenkodierungsoptionen aus
  5. Wählen Sie die resultierenden Daten in Calc aus und kopieren Sie das Einfügen nach Excel
0
Dan

Dies ist eine alte Frage, aber ich hatte gerade ein ähnliches Problem und die Lösung könnte anderen helfen:

Hatte dasselbe Problem, wenn CSV-Textdaten in eine Datei geschrieben wurden, dann wurde beim Öffnen der CSV-Datei in Excel der gesamte Text in eine einzige Spalte verschoben. Nachdem ich die obigen Antworten gelesen hatte, versuchte ich Folgendes, was das Problem zu lösen scheint.

Wenden Sie eine UTF-8-Kodierung an, wenn Sie Ihren StreamWriter erstellen. Das ist es.

Beispiel:

using (StreamWriter output = new StreamWriter(outputFileName, false, Encoding.UTF8, 2 << 22)) {
   /* ... do stuff .... */
   output.Close();
}
0
Rex

Ich hatte vor ein paar Tagen das gleiche Problem und konnte keine Lösung finden, da ich die Funktion import from csv nicht verwenden kann, da alles als Zeichenfolge formatiert werden kann.

Meine Lösung war, zuerst die Datei mit Notpad ++ und change the encode to ASCII zu öffnen. Dann einfach die Datei in Excel öffnen und es hat wie erwartet funktioniert.

0
lpinto.eu

Wenn Sie es vollautomatisch machen möchten, einen Klick ausführen oder automatisch von einer Webseite in Excel laden möchten, aber keine richtigen Excel-Dateien erstellen können, würde ich als Alternative das SYLK-Format empfehlen. OK, es ist nicht so einfach wie CSV, aber es ist textbasiert und sehr einfach zu implementieren und unterstützt UTF-8 ohne Probleme. 

Ich habe eine Klasse PHP geschrieben, die die Daten empfängt und eine SYLK-Datei ausgibt, die durch Klicken auf die Datei direkt in Excel geöffnet wird (oder Excel automatisch startet, wenn Sie die Datei mit dem richtigen Mime-Typ auf eine Webseite schreiben.) Sie können sogar Formatierungen hinzufügen (wie Fettdruck, Zahlen auf bestimmte Weise formatieren usw.) und die Spaltengröße ändern oder Spalten mit automatischer Größe für den Text in den Spalten festlegen. Insgesamt ist der Code wahrscheinlich nicht mehr als etwa 100 Zeilen.

Es ist kein Problem, SYLK zurück zu entwickeln, indem Sie eine einfache Tabelle erstellen und als SYLK speichern und dann mit einem Texteditor lesen. Der erste Block besteht aus Kopfzeilen und Standardnummernformaten, die Sie erkennen werden (die Sie gerade in jeder erstellten Datei wiederherstellen), dann sind die Daten einfach eine X/Y-Koordinate und ein Wert.

0
Cloudranger

Ich generiere csv-Dateien aus einer einfachen C # -Anwendung und hatte das gleiche Problem. Meine Lösung bestand darin, sicherzustellen, dass die Datei mit der UTF8-Kodierung geschrieben wird.

// Use UTF8 encoding so that Excel is ok with accents and such.
using (StreamWriter writer = new StreamWriter(path, false, Encoding.UTF8))
{
    SaveCSV(writer);
}

Ich hatte ursprünglich den folgenden Code, mit dem Akzente in Notepad ++ gut aussehen, aber in Excel verstümmelt wurden:

using (StreamWriter writer = new StreamWriter(path))
{
    SaveCSV(writer);
}

Ihre Laufleistung kann variieren - ich verwende .NET 4 und Excel von Office 365.

0
yoyo