Tabelle2 aktivieren und als CSV-Datei speichern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Tabelle2 aktivieren und als CSV-Datei speichern

von ykcim » Fr, 23.12.2005 12:17

Hi,

es geht auch mit getbyname.

Code: Alles auswählen

     myDoc = ThisComponent
     myView = myDoc.CurrentController
     mySheet = myDoc.Sheets.getByName("Tabelle1")
     myView.setActiveSheet(mySheet)
mfg
Michael

von Hago » Do, 22.12.2005 13:51

Hallo Thomas,

toll, danke, das hat geklappt.

Ich habe bisher dauernd versucht, die Auswahl mit "getSheetByName" hinzubekommen.

Gruß, Hago

von Toxitom » Do, 22.12.2005 13:32

Hey Hago,
Ich krieg' einfach nicht raus, wie ich die Tabelle2 aktivieren muss, dass diese als csv-Datei gespeichert wird.

Kann mir da jemand helfen?
Na, das ist einfach. Zudem hast du das Prinzip doch schon herausgefunden und - so hoffe ich - auch verstanden:
Als CSV Datei kann immer nur eine Tabelle eines Calc-Dokumentes exportiert werden. Der Einfachkeitshalber (oder auch, weil es die Benutzerführung so verlangt) wird immer die Tabelle exportiert, die gerade sichtbar ist. Die Sichtbarkeit wiederum ist eine Eigenschaft des Controllers - nur der "weiss", welche Tabelle gerade sichtbar ist.
Also: Da du die Tabelle selbst nicht vollständig "markieren" willst, such dir einfach eine Zelle - zum Beispiel die Zelle "A1" - und markiere (selektiere) diese:

Code: Alles auswählen

sub MachCSV_KeineFleischaktion

dim document   as object
dim dispatcher as object
dim sUrl1$     
oDoc = ThisComponent
oSheet0 = oDoc.Sheets(0)
oSheet1 = oDoc.Sheets(1)
Controller = oDoc.CurrentController 

oZelle = oSheet1.getCellRangeByName("A1")  'die Zelle

oDoc.store()

oZell0 = oSheet0.GetCellByPosition(2,4)
oString = oZell0.GetString

oZell1 = oSheet1.GetCellByPosition(1,0)
oZell1.string = oString
oZell2 = oSheet1.GetCellByPosition(2,0)
oZell2.string = "xkeinFleischx"oZell2.string = "xkeinFleischx" 

REM Jetzt die Zelle A1 im zweiten Blatt markieren
Controller.select(oZelle)

dim args7(2) as new com.sun.star.beans.PropertyValue                       
sUrl1$ = "file:///C:/aserver/aapflugi/listen/Fleischliste.csv"
args7(0).Name = "Overwrite" 
args7(0).Value = TRUE
args7(1).Name = "FilterName"
args7(1).Value = "Text - txt - csv (StarCalc)"
args7(2).Name = "FilterOptions"
args7(2).Value = "59,34,0,1,1/1/2/1/3/1/4/1/5/1/6/1/7/1/8/1"
oDoc.storeAsURL(sUrl1$, args7()) 

oDoc.close(false)

end sub

Das war es auch schon. Durch die Controlleranweisung wird die Zelle A1 des 2.Tabellenblattes sichtbar gestellt, es ist jetzt genau dieses Tabellenblatt zu sehen und wird exportiert.

Viele Grüße
Thomas

Tabelle2 aktivieren und als CSV-Datei speichern

von Hago » Do, 22.12.2005 12:27

Hallo,

ich habe dieses Script gemacht, bzw aufgenommen:

Code: Alles auswählen

sub MachCSV_KeineFleischaktion

dim document   as object
dim dispatcher as object 
dim sUrl1$     
oDoc = ThisComponent
oSheet0 = oDoc.Sheets(0)
oSheet1 = oDoc.Sheets(1) 
Controller = oDoc.CurrentController 
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

oDoc.store()

oZell0 = oSheet0.GetCellByPosition(2,4)
oString = oZell0.GetString

oZell1 = oSheet1.GetCellByPosition(1,0)
oZell1.string = oString
oZell2 = oSheet1.GetCellByPosition(2,0)
oZell2.string = "xkeinFleischx"oZell2.string = "xkeinFleischx"

dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())

dim args7(2) as new com.sun.star.beans.PropertyValue                       
sUrl1$ = "file:///C:/aserver/aapflugi/listen/Fleischliste.csv"
args7(0).Name = "Overwrite"  
args7(0).Value = TRUE
args7(1).Name = "FilterName"
args7(1).Value = "Text - txt - csv (StarCalc)"
args7(2).Name = "FilterOptions"
args7(2).Value = "59,34,0,1,1/1/2/1/3/1/4/1/5/1/6/1/7/1/8/1"
oDoc.storeAsURL(sUrl1$, args7())

rem Shell("C:\perl\bin\perl.exe ftp-upload-CSV.pl",1)

oDoc.close(false)

end sub
In der Tabelle2 werden unterschiedliche Daten aus Tabelle1 und
neue Einträge zusammengestellt, ausgedruckt und eben auch als csv-Datei gespeichert und auf einen Webserver hochgeladen.
(Zum Testen habe ich nur das Notwendigste gelassen)

So, wie es jetzt ist klappt es, aber ich möchte gerne den Dispatcher los werden.

Das Problem ist, dass immer die Tabelle1 als csv-Datei gespeichert wird, wenn ich die Zeilen mit "JumpToTable" weg lasse.
Ich krieg' einfach nicht raus, wie ich die Tabelle2 aktivieren muss, dass diese als csv-Datei gespeichert wird.

Kann mir da jemand helfen?

Gruß, Hago

Nach oben