sxc als .csv mit Filteroptionen per Marko speichern

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

twist
Beiträge: 2
Registriert: Do, 23.12.2004 16:02

sxc als .csv mit Filteroptionen per Marko speichern

Beitrag von twist »

Hallo habe da ein kleines Problem, ich versuche eine Calc Datei mit 2 Tabellen in jeweils eine .csv Datei zu speichern. Das Funktioniert soweit auch, allerdings müssen die Felder mit {TAB} getrennt sein und der Text mit | getrennt . Diese Einstellung bekomme ich im Makro nicht hin. Soweit ich das ganze in den Dokus verstanden habe geht das mit "FilterFlags" allerdings hab ich nirgendwo in den ganzen Dokus was dazu gefunden.

Hier mal mein Makro:

sub csv_speichern
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Export/tabelle1.csv"
args1(1).Name = "FilterName"
args1(1).Value = "Text - txt - csv (StarCalc)"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "URL"
args3(0).Value = "file:///C:/Export/tabelle2.csv"
args3(1).Name = "FilterName"
args3(1).Value = "Text - txt - csv (StarCalc)"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args3())


end sub

Für eine kurze anregung oder einen Link wäre ich sehr dankbar

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

Beitrag von Stephan »

dieses Dokument:
http://api.openoffice.org/basic/man/tut ... torial.pdf

Seite 41ff. sollte helfen.

Gruß
Stephan
twist
Beiträge: 2
Registriert: Do, 23.12.2004 16:02

Beitrag von twist »

Hi, vielen Dank für den Tip, hat funktioniert.

Hier das Makro, es speichert zuerst die Änderungen in der Datei, danach werden die Kopfzeilen aus den beiden Tabellen gelöscht. Anschließend werden die beiden Tabellen jeweils als eine Datei in c:\exporte\... mit Feldtrenner {tab} und Texttrenner | exportiert und OpenOffice schließt sich.


===============================================
sub csv_speichern
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim oDocument As Object
oDocument = ThisComponent

rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

oDocument.store(true)

Dim Doc As Object
Dim Sheet As Object
Dim NewColumn As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Sheet.Rows.removeByIndex(0, 1)
Sheet = Doc.Sheets(1)
Sheet.Rows.removeByIndex(0, 1)

rem ----------------------------------------------------------------------
Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
Dim oDoc as Object, sURL as String
Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent
sUrl = "file:///c:/exporte/tabelle1.csv"
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
mFileProperties(1).Value = "9,124,SYSTEM,2,1/1/2/1/3/1/4/1/5/1/6/1"
oDoc.storeAsUrl( sUrl, mFileProperties())



rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())

rem ----------------------------------------------------------------------
rem Dim mFileProperties(2) As New com.sun.star.beans.propertyValue
rem Dim oDoc as Object, sURL as String
rem Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent
sUrl = "file:///c:/exporte/tabelle2.csv"
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
mFileProperties(1).Value = "9,124,SYSTEM,2,1/1/2/1/3/1/4/1/5/1/6/1"
oDoc.storeAsUrl( sUrl, mFileProperties())

document.close(true)

end sub
Antworten