Tabellen mit Formatierung übertragen

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Tabellen mit Formatierung übertragen

Beitrag von erikafuchs »

Ihr Lieben,

ich hätte da jetzt ein neues Problem:
Ich möchte aus vielen Dateien jeweils eine Seite kopieren und aus diesen Seiten ein neues Dokument erstellen. Ich habe das ja so weit zum Laufen bekommen, hätte jetzt aber gerne, dass auch die Formatierungen übernommen werden.
Bei meinem Versuch öffne ich zuerst das Zieldokument und von da aus per Makro nacheinander die Ursprungsdokumente, erzeuge jeweils ein neues Blatt ("neuesBlatt") und füge es mit "insertByName(NameX,neuesBlatt)" in das Zieldokument ein. Dann übertrage ich die Daten mit "getDataArray -> setDataArray". Jetzt habe ich aber halt immer nur die Daten aber meine schöne Foramtierung der Ursprungsseiten ist weg. Geht das auch anders?

Grüße
Pit

Code: Alles auswählen

sub einfuegen
   DialogLibraries.LoadLibrary("Datenbank")
   InDialog=createUnoDialog(DialogLibraries.Datenbank.InDialog) 
   InDialog.getControl("Dateiauswahl").text="Hier klicken um Datei einzufügen->"   
   InDialog.execute() 
   
   InDateiURL=InDialog.getControl("Dateiauswahl").text
   if InDateiURL = "Hier klicken um Datei einzufügen->"  then exit sub  
   n=InStr(InDateiURL, "Rechentrainer")
   if n>0 then
      URLLaenge=len(InDateiURL)
      URL=ConvertToURL(InDateiURL)      
      InDoc=StarDesktop.loadComponentFromURL(URL, "_blank", 0, Arg())
      nachname=InDoc.sheets.getByName("Daten").getCellByPosition(1,1).string
      vorname=InDoc.sheets.getByName("Daten").getCellByPosition(2,1).string
      endzeile=InDoc.sheets.getByName("Daten").getCellByPosition(0,2).string  
         
      sname=nachname & "_" & vorname
      oDoc=ThisComponent
      oTab=oDoc.getSheets(0)
      oSheet=oDoc.createInstance("com.sun.star.sheet.Spreadsheet") 
      oTab.insertByName(sname,oSheet) 
                
      DatArray=InDoc.sheets.getByName("Übersicht").getCellRangeByPosition(0,0,13,endzeile).getDataArray
      oDoc.sheets.getByName(sname).getCellRangeByPosition(0,0,13,endzeile).setDataArray(DatArray)      
      InDoc.close(true)
   end if      
end sub
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Tabellen mit Formatierung übertragen

Beitrag von komma4 »

Warum so umständlich (Range kopieren)?
Wie wäre es mit dem Erzeugen einer Verknüpfung zu den Ziel-Dateien (hierbei bleiben alle Formatierungen erhalten):

Code: Alles auswählen

' Einfügen auf Blatt "Tabelle2" (index=1)
oBlatt = ThisComponent.Sheets().getByIndex( 1 ) 
' auf selektiertem Blatt eine Verküpfung einfügen
oBlatt.Link( "/pfad/zur/Datei.ods", "", "", "", com.sun.star.sheet.SheetLinkMode.NORMAL )

...wenn Du die Daten überhaupt kopieren möchtest (musst?)?
Warum nicht mit den Werten in den Zieldateien rechnen? Über DDE in Deine Zusammenfassung einbinden...?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellen mit Formatierung übertragen

Beitrag von erikafuchs »

Lieber Winfried,

das klingt plausibel. Werden dann aber alle 20 bis 30 Dateien aufgehalten während man mit dem Dokument arbeitet?

Grüße
Pit
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Tabellen mit Formatierung übertragen

Beitrag von komma4 »

Ja: verknüpfte Tabellen werden als versteckte Kopie ins Zieldokument geladen und dort vorrätig gehalten.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellen mit Formatierung übertragen

Beitrag von erikafuchs »

Lieber Winfried,

ich hätte da ja noch eine Idee: Anstatt die einzufügenden Seiten neu zu erzeugen, könnte ich doch eine leere Seite formatieren, diese jeweils kopieren und die Daten da eintragen. Leider habe ich da das Problem, dass zwar die Formatierung beim Kopieren (auf den ersten Blick) übernommen wird, nicht aber die Spaltenbreiten, dieSpalten im kopierten Blatt sind immer alle gleich breit. Dieses Problem hatte ich schon oft - weißt du auch hierfür eine Lösung?

Gruß von Pit
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellen mit Formatierung übertragen

Beitrag von erikafuchs »

Und noch was

ich habe jetzt mal das mit der Verknüpfung anstelle des Datenkopierens ausprobiert. Leider ist die eine Seite die ich jeweils einfügen will mit anderen Seiten des "Original"dokuments verknüpft, diese Verknüpfungen funktionieren dann leider nicht mehr.

Ich fürchte, das habe ich noch nicht so ganz im Griff!

Viele Grüße und Dank für Deine Mühe
Pit
Antworten