Reine Textdatei(en) aus Calcdaten erstellen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Will i
Beiträge: 6
Registriert: Di, 01.05.2007 11:38

Reine Textdatei(en) aus Calcdaten erstellen

Beitrag von Will i »

Hallo,

ich versuche folgendes Problem zu lösen.
Ich habe tausende von Bilddateien die eine reine Textdatei mit dem gleichen Namen (Worlddatei) erhalten sollen. Der Dateiname und die Daten die in der Textdatei erscheinen sollen werden in Calc berechnet, bzw liegen dort vor.
Meine bisherigen Versuche mit einem Makro, welches eine neue Textdatei mit dem Namen erstellen soll, scheitern leider schon im Ansatz. Das folgende Makro hab ich in ähnlicher Form gefunden und versucht anzupassen.
Sub Save
oDoc=thisComponent
Sheet = oDoc.Sheets(0) '[erstes Arbeitsblatt]
Cell = Sheet.getCellByPosition(0, 0) '[Zelle A1]
Filename = Cell.String
Path = "file:///C:/Temp/GK3/" '[Pfad anpassen bei Windows]
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
args1(0).Value = "Text"
oDoc.storeAsUrl(Path & Filename & ".txt",args1())
End Sub

Mein 2ter Versuch als Seriendruck aus Writer heraus scheiterte an der fehlenden Übernahmemöglichkeit des Dateinamens aus den Daten von Calc heraus. Die Textdatei habe ich dann zwar, aber ich müsste Sie einzeln mit "speichern unter" als Textdatei ablegen. Bei mehreren Tausend Dateien etwas umständlich.

Wie kann ich die reine Textdatei erstellen lassen und die Tabelleneinträge die in verschiedenen Spalten vorliegen dann untereinander setzen?

Vielen Dank und einen schönen 1. Mai

Willi
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Code: Alles auswählen

args1(0).Name = "FilterName" 
args1(0).Value = "Text"


Es gibt keinen Exportfilter mit Namen "Text" für Calc (den gibt es nur für Writer)

Hier ist ein passender Thread:
viewtopic.php?t=11034&highlight=filtername
Mein 2ter Versuch als Seriendruck aus Writer heraus scheiterte an der fehlenden Übernahmemöglichkeit des Dateinamens aus den Daten von Calc heraus. Die Textdatei habe ich dann zwar, aber ich müsste Sie einzeln mit "speichern unter" als Textdatei ablegen.
Erkläre wie Du vorgegangen bist, mir ist der Zusammenhang zwischen einer Calc-Datei und Seriendruck unklar, da sie ja nach obrigen Ausführungen nicht die Adressquelle sein dürfte.
und die Tabelleneinträge die in verschiedenen Spalten vorliegen dann untereinander setzen?
Auch das müßtest Du erklären, denn so wie es dasteht schließt es natürlich einen einfachen Export aus, weil erst die Werte umsortiert werden müssen. Wie das am Besten ginge hängt von den Anforderungen ab die Du hast.




Gruß
Stephan
Will i
Beiträge: 6
Registriert: Di, 01.05.2007 11:38

Beitrag von Will i »

Hallo Stephan,

erstmal vielen Dank für deine Antwort. Den ersten Teil mit dem Filter versuche ich dann mal nachzuvollziehen. In dem angegebenen Thread wird ja eine Textdatei (csv) erstellt.

Zum besseren Verständnis, herauskommen soll eine Datei mit dem Namen XXXXX_XXXXX.jpw deren Inhalt besteht aus 6 untereinander aufgeführten Zahlen.

Alle Daten die zur Erstellung dieser Textdatei benötigt werden sind als einzelne Tabelleneinträge in der Calc-Tabelle vorhanden.
Die Tabelle hat die Einträge "Dateiname", "Start", "Wert1", "Wert2", "Ende", "Rechtswert", "Hochwert".
Mein erster Ansatz hatte bisher auch nicht berücksichtigt, dass eine Schleife durchlaufen werden muss bis alle Einträge der Tabelle abgearbeitet sind.
Erkläre wie Du vorgegangen bist, mir ist der Zusammenhang zwischen einer Calc-Datei und Seriendruck unklar, da sie ja nach obrigen Ausführungen nicht die Adressquelle sein dürfte.
Der Seriendruck macht nichts anderes als die relevanten Daten aus der Calc-Tabelle in einem Textdokument untereinander zu setzen. Nach dem Speichern, drucken, versenden ist es ja möglich die Dateien als einzelne Dokumente zu speichern.
Was mir dann aber fehlt ist die korrekte Bezeichnung, welche aus dem entsprechenden Datenfeld stammen sollte. Die Ablage des Dokuments als reine Textdatei ist beim speichern ja auswählbar. Der Dateiname erhält dann aber, außer dem händischen Eintrag nur eine Aufzählung von 1 bis X, mit der ich dann wieder nichts anfangen kann.

Gruß

Willi
Ein Tag ohne Herausforderung ist ein langweiliger Tag.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Zum besseren Verständnis, herauskommen soll eine Datei mit dem Namen XXXXX_XXXXX.jpw deren Inhalt besteht aus 6 untereinander aufgeführten Zahlen.


Tja, keine Ahnung im ersten Post ist von *.txt als Dateiendung die Rede:

Code: Alles auswählen

oDoc.storeAsUrl(Path & Filename & ".txt",args1())


Was stimmt denn nun?

Ich nehme im Weiteren an das *.txt stimmt.
Alle Daten die zur Erstellung dieser Textdatei benötigt werden sind als einzelne Tabelleneinträge in der Calc-Tabelle vorhanden.
Die Tabelle hat die Einträge "Dateiname", "Start", "Wert1", "Wert2", "Ende", "Rechtswert", "Hochwert".
Mein erster Ansatz hatte bisher auch nicht berücksichtigt, dass eine Schleife durchlaufen werden muss bis alle Einträge der Tabelle abgearbeitet sind.
Ich würde das dann lieber direkt machen, geht ohnehin scheller als normal zu speichern.

Stehen die Werte zeilenweise untereinander und die erste gültige Zeile gehr von A1 bis G1 und der Name der Tabelle ist "Tabelle1", sollte folgender Code reichen:

Code: Alles auswählen

Sub txt_exportieren()
i = 0
halt = 0
Do
	dateiname = ThisComponent.Sheets().getByName("Tabelle1").GetCellByPosition(0,i).String
	akt_datei = Freefile
	open ConvertToURL("C:\Temp\GK3\" & dateiname & ".txt") for OutPut as akt_datei
	For j = 1 To 6
		Print #akt_datei, ThisComponent.Sheets().getByName("Tabelle1").GetCellByPosition(j,i).String
	Next j
	close #akt_datei
	i = i + 1
	If ThisComponent.Sheets().getByName("Tabelle1").GetCellByPosition(0,i).String = "" Then halt = 1
Loop While halt = 0
End Sub




Gruß
Stephan
Will i
Beiträge: 6
Registriert: Di, 01.05.2007 11:38

Beitrag von Will i »

Hallo Stephan,

Vielen Dank für das Makro, es funktioniert tadellos. Werde mich mal daran machen es in allen Einzelheiten zu verstehen.

Die Dateiendung ist jedoch tatsächlich jgw, aber die wird ja in dem Fall komplett aus der Tabelle genommen. Die Endung ".txt" habe ich für mich aus dem Makro entfernt.

Zum besseren Verständnis, gibt Freefile das Textformat vor?


Gruß

Willi
Ein Tag ohne Herausforderung ist ein langweiliger Tag.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Zum besseren Verständnis, gibt Freefile das Textformat vor?
Nein, FreeFile öffnet einen Datenkanal zum Schreiben einer Datei.
(siehe OOo-Hilfe)


Gruß
Stephan
Will i
Beiträge: 6
Registriert: Di, 01.05.2007 11:38

Beitrag von Will i »

Danke, hab den Eintrag in der OOo.Basic-Hilfe gefunden.

Gruß
Willi
Ein Tag ohne Herausforderung ist ein langweiliger Tag.
Antworten