Durch das Speichern einer Datei in einem CSV-Typ in Excel wird die Stückliste immer entfernt

15

Ich habe versucht, eine vernünftige Lösung / Erklärung zu finden (erfolglos), um herauszufinden, warum Excel standardmäßig die Stückliste entfernt, wenn eine Datei im CSV-Typ gespeichert wird.

Bitte verzeihen Sie mir, wenn Sie ein Duplikat dieser Frage finden. Hiermit wird das Lesen von CSV-Dateien mit Nicht-ASCII-Codierung behandelt, das Speichern der Datei wird jedoch nicht behandelt (hier liegt das größte Problem).

Hier ist meine aktuelle Situation (die ich zusammenfassen werde, ist bei lokalisierter Software, die sich mit Unicode-Zeichen und einem CSV-Format befasst, üblich):

  • Wir exportieren Daten mit UTF-16LE in ein CSV-Format und stellen dabei sicher, dass die Stückliste gesetzt ist (0xFFFE). Wir überprüfen, nachdem die Datei mit einem Hex-Editor generiert wurde, um sicherzustellen, dass sie korrekt festgelegt wurde.

  • Öffnen Sie die Datei in Excel (in diesem Beispiel exportieren wir japanische Zeichen) und stellen Sie fest, dass Excel das Laden der Datei mit der richtigen Codierung handhabt.

  • Beim Versuch, diese Datei zu speichern, wird eine Warnmeldung angezeigt, die darauf hinweist, dass die Datei möglicherweise Funktionen enthält, die nicht mit der Unicode-Codierung kompatibel sind. Sie werden jedoch gefragt, ob Sie die Datei trotzdem speichern möchten.

  • Wenn Sie das Dialogfeld "Speichern unter" auswählen, werden Sie sofort aufgefordert, die Datei als "Unicode-Text" anstelle von CSV zu speichern. Wenn Sie die Erweiterung "CSV" auswählen und die Datei speichern, wird die Stückliste entfernt (natürlich zusammen mit allen japanischen Zeichen).

Warum sollte das passieren? Gibt es eine Lösung für dieses Problem oder handelt es sich um einen bekannten 'Bug' / eine bekannte Einschränkung von Excel?

Zusätzlich (als Nebenproblem) scheint es, dass Excel beim Laden von UTF-16LE-codierten CSV-Dateien nur TAB-Trennzeichen verwendet. Ist dies wieder ein weiterer bekannter Fehler / eine Einschränkung von Excel?

Rickp
quelle

Antworten:

6

Es gibt keine höflichen Antworten auf Fragen des Formulars "Warum macht Excel X?".

Warum übernehmen Sie nicht einfach "Als Unicode-Text speichern" als Standardübertragungsformat? Excel Speichern unter stellt sicher, dass es eine Stückliste gibt, verwendet TAB als Trennzeichen, zitiert Felder wie CSV ...

Übrigens "wählen Sie nicht die CSV-Erweiterung". Sie haben ZWEI Möglichkeiten - Format und Erweiterung. Versuchen Sie, im Feld "Dateityp" als Unicode-Text zu speichern, und ändern Sie die Erweiterung im Feld "Dateiname" manuell in "csv". Beenden Sie dann Excel und doppelklicken Sie im Windows Explorer auf den Dateinamen. Öffnet gut. Versuch es.

Aktualisieren Sie, um die Kommentare von OP zu diskutieren :

  • "Als Unicode-Text speichern" (in Excel 2007) speichert Ihre Datei immer als Text-Erweiterung (ich kann nicht für frühere oder neuere Versionen sprechen). Das ist die Idee von "Als Typ speichern" ...

=> Bitte lesen Sie sorgfältig, was ich oben geschrieben habe und probieren Sie es selbst aus. Ihre Datei wird immer mit einer TXT-Erweiterung gespeichert, es sei denn, Sie überschreiben Folgendes : Löschen Sie das txtFeld "Dateiname" und geben Sie Folgendes ein csv.

  • Es ist falsch, zu verdeutlichen, dass in Excel unter "Speichern als" eine Stückliste vorhanden ist.

=> "Als Unicode-Text speichern " stellt sicher, dass sich am Anfang der Datei eine UTF-16LE-Stückliste befindet. Probieren Sie es aus und sehen Sie.

  • Dies ist der Grund, warum ich überhaupt eine Frage gestellt habe! Wenn ich eine CSV-formatierte Datei öffne, die eine Stückliste enthält, die angibt, dass meine Datei UFT-16LE-codiert ist, und diese Datei über Excel ändere, erwarte ich beim Speichern dieser Datei, dass die Codierung intakt bleibt ...

=> und Ihre Erwartungen werden nicht erfüllt, da Excel keine Informationen zu eingegebenen CSV-Dateien speichert. Es gibt keine Möglichkeit, es dazu zu zwingen, das zu tun, was Sie tun möchten. Also gibst du entweder auf oder probierst etwas anderes, wie ich es vorschlage.

  • Was wirklich nett wäre, ist jemand, der diese Probleme schon einmal erlebt hat, geben Sie bitte Ihre Einsicht.

=> Ich habe diese Probleme mit chinesischen Daten und Excel 1997 vor Jahren erlebt. Bevor ich Ihre Frage beantworte, habe ich mit Excel 2003 und Excel 2007 überprüft, dass sich Excel immer noch schlecht verhält. Ich habe überprüft, dass die Problemumgehung "Dateityp = Unicode-Text, Erweiterung = CSV" tatsächlich funktioniert. Ich habe meine Einsichten geliefert.

John Machin
quelle
1
"Als Unicode-Text speichern" (in Excel 2007) speichert Ihre Datei immer als Text-Erweiterung (ich kann nicht für frühere oder neuere Versionen sprechen). Das ist die Idee von "Dateityp" ... Um zu verdeutlichen, dass in Excel "Speichern unter" eine Stückliste vorhanden ist, ist dies falsch. Dies ist der Grund, warum ich überhaupt eine Frage gestellt habe! Wenn ich eine CSV-formatierte Datei öffne, die eine Stückliste enthält, die angibt, dass meine Datei UFT-16LE codiert ist, und diese Datei über Excel ändere, erwarte ich beim Speichern dieser Datei, dass die Codierung intakt bleibt ... Was wirklich nett wäre, ist jemand Wer diese Probleme schon einmal erlebt hat, gebt bitte einen Einblick.