# Tabulator in Datei schreiben



## F4llen4ngel (2. Apr 2009)

Hallo!

Möchte gern Daten aus meiner GUI in eine CSV Datei Exportieren können.
Das Trennzeichen MUSS ein Tabulator sein, da andere Programme das Format nicht erkennen.

Problem:
Öffne ich die Datei mit Notepad++ wird alles korrekt dargestellt. Öffne ich die Datei in Excel, lassen
sich statt der Tabs nur diese verfluchten Kästchen mit dem Fragezeichen drin anzeigen.
Leider erwarten die anderen Programme beim Import wohl die Datei so, dass sie in Excel korrekt angezeigt wird :-/

Geschrieben wird in die Datei über einen BufferedWriter:

```
mWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(mFile),"UTF-8"));
```
Der Tabulator wird weder über "\t" noch über "\u0009" korrent angezeigt in Excel.

Weiss jemand Rat?

Danke


----------



## F4llen4ngel (2. Apr 2009)

Update:
Benenne ich die Datei in .TXT um lässt sie sich bei Excel ohne Probleme öffnen und darstellen :-/
Was muss ich machen damit es auch als CSV klappt?


----------



## SlaterB (2. Apr 2009)

kannst du denn überhaupt in Excel selber ein Tab eintippen? gibts da nicht

Tab in Excel - Google-Suche
->
Tab in Excel - Office - Forum - CHIP Online
wer-weiss-was | "Tabulator in Excel" | aus Forum Tabellenkalkulation


----------



## maki (2. Apr 2009)

Beim Import von CSV Daten konnte man in Excel doch das trennzeichen einstellen, zumindest früher.


----------



## woezelmann (2. Apr 2009)

Also ich würd mal sagen, dass excel bei .csv-Dateien Semikoli als Trennzeichen erwartet. Probier einfach mal, eine csv mit tab-Trennzeichen von Hand zu schreiben, wird auch nicht funzen.


----------



## F4llen4ngel (2. Apr 2009)

habe einige csv dateien die mit TAB getrennt sind die excel beim normalen doppelklick automatisch als trennzeichen erkennt ... sollte also prinzipiell möglich sein


----------



## SlaterB (2. Apr 2009)

kannst ja mal eine dieser Dateien zur Verfügung stellen,
wenn ich selber eine mit
xTabxTabx
xTabxTabx
erstelle
dann wird die nicht erkannt

mein erstes Post ist weitgehend obsolet, Tab als Trennzeichen ist was anderes als Tab als Text


----------



## F4llen4ngel (2. Apr 2009)

so ein schritt weiter gekommen.
die datei MUSS im "UNICODE" format geschrieben werden.

habe die eine Zeile so abgeändert:
mWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(mFile), "Unicode"));

Allerdings schreibt er die Datei nun als "unicode Big Endian" - was muss ich umstellen damit es auf Unicode steht?


----------



## faetzminator (3. Apr 2009)

Unter Windows sollte das einfach mit "latin1" oder "iso-8859-15" / "iso-8859-1" gehen... Windows arbeitet nicht mit utf8.


----------



## F4llen4ngel (23. Apr 2009)

Funktioniert leider nicht, über Notepad steht im entsprechenden Feld immer noch "ANSI" anstatt "UNICODE".
Sonst noch jemand eine Idee?


----------



## Ebenius (23. Apr 2009)

faetzminator hat gesagt.:


> Unter Windows sollte das einfach mit "latin1" oder "iso-8859-15" / "iso-8859-1" gehen... Windows arbeitet nicht mit utf8.


Die Aussage ist Unsinn. In China arbeiten die meisten Windows mit Big5-Kodierung. In Russland wird wohl eher latin5 statt latin1 verwendet. In Südeuropa latin3. Und soweit ich weiß gibt's auch Windows-UTF-Systeme.



F4llen4ngel hat gesagt.:


> Funktioniert leider nicht, über Notepad steht im entsprechenden Feld immer noch "ANSI" anstatt "UNICODE".
> Sonst noch jemand eine Idee?


Du hast hier IMHO ein Verständnisproblem. Unicode ist ein Zeichenstandard. Die Formate in denen Unicode-Zeichen abgespeichert werden, heißen Unicode Transformation Format. UTF-8 ist bei Zeichen-Codes kleiner 127 gleich mit ASCII. ASCII ist für Zeichen größer 31 gleich zu ANSI. Notepad wird Dir also immer ANSI anzeigen, wenn Du UTF-8 speicherst, aber keine Umlaute drin hast.

Das alles ist aber bei Deinem Problem erst einmal unerheblich, so lange Du keine Sonderzeichen verwendet hast. Normaler Weise benutzt Du die Kodierung das das System verwendet; sofern es keinen Grund gibt, dies anders zu machen. Das bedeutet: Gib überhaupt keine Kodierung an.

Meine CSV-Exporter habe ich auf Komma umgestellt (heißt ja auch _Comma Separated Values_). Mit TAB hatte ich auch auf manchen Kundensystemen Probleme, auf anderen nicht. Mit Komma funktioniert's anscheinend.

Ebenius


----------



## faetzminator (24. Apr 2009)

Ebenius hat gesagt.:


> Die Aussage ist Unsinn. In China arbeiten die meisten Windows mit Big5-Kodierung. In Russland wird wohl eher latin5 statt latin1 verwendet. In Südeuropa latin3.


Ja, es wird immer ISO-8859-X = latinX verwendet, was bei uns latin1 wär. Ändert aber nichts daran dass dies inkompatibel zu UTF8 ist.



> Und soweit ich weiß gibt's auch Windows-UTF-Systeme.


Gibts das  ?


----------

