Export (bzw. Speichern als CSV) Probleme mit "

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Export (bzw. Speichern als CSV) Probleme mit "

Beitrag von samual »

Hallo,

ich möchte mit OOCalc eine Tabelle mit 5600 Datensätzen exportieren. Die Schnittstelle verlangt, das jedes Attribut (Spalte) in " eingefasst ist, das lässt sich nicht ändern.
Ein Datensatz soll also wie folgt aussehen:
"1221929", "Test Text", "Inhalt", "999 Boston"
usw. und das 5600 mal. Es klappt aber nur das OOCalc die Texte mit einem Space in " setzt. Das sieht bisher also immer so aus:
1221929,"Test Text",Inhalt,"999 Boston"
Und das reicht mir leider nicht. Jemand einen Tipp? Was man da machen kann?
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag von pmoegenb »

Hallo Samuel,

wenn du den Filter Text CSV (.csv; .txt) auswählst hast du die Möglichkeit mit der Option Filtereinstellungen bearbeiten das Trennzeichen selbst festzulegen (Unterste Checkbox bei Speichern unter).

Gruß

Peter
samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Beitrag von samual »

Danke für die Hilfe, die Check-Box habe ich tatsächlich übersehen. Aber trotzdem habe ich dann immernoch das selbe Problem.
Ich kann auswählen:
Zeichensatz
Feldtrenner
Texttrenner
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Samuel.
1221929,"Test Text",Inhalt,"999 Boston"
Zahlen werden per Definition nicht in doppelte Hochzeichen gesetzt. Nur dadurch werden sie auch wieder automatisch erkannt. Bei "inhalt" hast du sie sicher nur vergessen, da kommen nämlich automatisch welche hin.
Wenn du die Zahlen auch als Text haben willst, musst du sie erst in OOo umwandeln -> am besten mit einer Hilfsspalte.
Das zusätzliche Leerzeichen nach dem Komma - falls das wirklich benötigt wird, wirst du auf den Weg gar nicht hinbekommen.
Da bleibt dann nur.... ein Makro.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Wandle vor dem Speichern als csv alle Zahlen in Strings um. Unter Zuhilfenahme Suchen-Ersetzen geht das mit den regulären Ausdrücken:
suchen nach: [:digit:]*
ersetzen durch: '&
evtl. kannst Du die Suche begrenzen indem Du z.B. eine Spalte selektierst.
Wähle nun Speichern unter und dort txt/csv und stelle als Feldtrenner Komma und als Texttrenner Anführungsstriche ein.

Gruß
Stephan
samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Beitrag von samual »

Ich habe schon versucht alle Felder in Text umzuwandeln, das hat wohl nicht gereicht und nein das blank ist nicht nötig, das war ein Schreibfehler.

Danke für die Tipps, Morgen werde ich es erneut versuchen.
samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Beitrag von samual »

Super hat geklappt, danke!!!!

Aber ich bemerke jetzt das nächste Problem, er findet gnadenlos jede Zahl.
Telefonnummern sehen danach so aus:
+'1/111 111-1111

vorher war es:
+1/111 111-1111

selbiges gilt für Textfelder mit Nr drin, sie sehen jetzt so aus:
TEXT '2

was vorher so war:
TEXT 2

Kann man das verhindern? Das er sich nur Zahlenfelder anguckt oder so?
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Du kannst:
(a)im Suchendialog anhaken nur in Selektion und vorher die Zellen markieren in denen gesucht werden soll, das ist einfach wenn alle Zelle in einer oder mehreren Spalten und nicht verstreut sind.
(b)dem Ratschlag von Thomas folgen und eine Hilfsspalte verwenden, in DEinem Fall (wenn es nur um die Formatierung für das Exportieren geht) kannst Du einfach eine zweite Tabelle benutzen und alles konvertieren. Wenn z.B. Deine Werte in einer Tabelle names Tabelle1 stehen erzeuge eine neue Tabelle und schreibe dort in Zelle A1 die Formel:
=WENN(T(Tabelle1.A1)="";TEXT(Tabelle1.A1;0);Tabelle1.A1)
und kopiere sie anschließend in alle benötigten Zellen. Das sollte alle Werte der Ausgangstabelle als Text formatieren.
(c)Du kannst den Suchausdruck in ^[1234567890] verändern
(d)Du kannst die Daten als Csv exportieren und die jetzt noch falsche csv-Datei wieder importieren und beim Importdialog durch klicken auf die Spaltenköpfe das Format für jede Spalte auf Text stellen, dann sind alle Werte Text und Du kannst die neue Datei nochmals als csv speichern. Die letztere csv-Datei ist dann richtig formatiert.

Gruß
Stephan
samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Beitrag von samual »

Hallo Stephan,

ich habe beim Import alles auf Text gestellt, das ist die beste Lösung, da es darum geht in einer großen Tabelle mal schnell was zu ändern, dazu will ich nicht mit ner weiteren Tabelle arbeiten.
Der Export sieht super aus, und ich teste grade die Datensätze.
samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Beitrag von samual »

Soweit hat das jetzt geklappt, bis auf ein Problem....
auch leere Felder sollen in " gesetzt werden. Also z.B. so:
"11111","","Test 11"

leider sieht es so aus:
"11111",,"Test 11"

Es könnte eine Möglichkeit sein da einfach ein Space einzutragen so richtig gut ist das aber nicht, da damit die Möglichkeit entfällt leere Attribute abzufragen.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ja, kein Problem:
Die datei sieht so aus:
"11111",,"Test 11"
und heißt z.B. xyz.csv
dann:
-benenne die Datei um in z.B. xyz.txt
-öffne diese Datei in OpenOffice und sie wird im Writer geöffnet
-wähle suchen nach ,, und ersetzen durch ,"";
-speichere diese Datei nun wieder als xyz.txt
-benenne die Datei um in xyz.csv

Nun hast Du eine CSV-Datei die so aussieht:
"11111","","Test 11"

was ich gerade beschrieben habe ist übrigens ganz überflüssig. Öffne die Datei xyz.csv mit Notepad (so Du mit Windows arbeitest, sonst mit anderem Texteditor), wähle suchen nach ,, und ersetzen durch ,"", und speichere. Schon ist alles wie Du es haben willst.

Gruß
Stephan
samual
Beiträge: 7
Registriert: Di, 21.12.2004 12:14

Beitrag von samual »

OK, das ist gut, aber eine Erweiterung dazu habe ich noch:
Da man ja nur ,, außerhalb von Textfeldern finden will sollte der Suchbegriff ",," lauten und durch ",""," ersetzt werden. Sonst würde man falls im Textfeld ,, vorkommt diese ersetzen und so ein Fehler provozieren.
Wobei auch das problematisch sein kann, wenn mehrere Felder hintereinander leer sind, da diese dann ja so aussehen: ",,,,,,," da ist dann obige Möglichkeit wohl doch das einzig sinnvolle.
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo samuel,

also, wenn ich mir die Diskussion so ansehe... ich glaube, da wäre ein Makro einfacher, schneller und mit weniger Arbeit verbunden.
Insbesondere, wenn diese Arbeit häufiger vorkommt - und nicht nur einmalig.
Mit Hilfe einer einfachen Schleife wäre es recht einfach möglich, durch den - zum Beispiel markierten oder feststehenden Bereich - zu iterieren, die Zelleninhalte auszulesen, und diese dann als Text wie gewünscht Zeile für Zeile in eine Datei zu schreiben.
Also, wenn du diese Arbeiten häufiger zu tun hast, wäre das mit Sicherheit die bessere Vorgehensweise.
Wenn du Hilfe brauchst - dann frag. Und gib ein Paar Daten über die Tabelle (wie strukturiert, wie beschreibbar...) und über die gewünschte Datei (feststehender, gleichbleibender Name, Verzeichnis....).
Das bekommen wir dann schon gebacken.
Schöne Weihnachten
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten