🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] com.sun.star.text.TextTables

Alles zur Programmierung im LibreOffice.
Antworten
gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: com.sun.star.text.TextTables

Beitrag von gogo » Mi 17. Jan 2018, 00:36

Hallo,
danke für die PN, ich wäre sonst nicht auf Deine Frage aufmerksam geworden.

Das Problem wird in der BRX mit der .mergeRange-Funktion eines Cursors gelöst. Das Prinzip ist: ein Cursor markiert ausgehend von einer Zelle alle anderen zu verbindenden Zellen und diese werden dann mit .mergeRange verbunden. Ich war damals erstaunt wie stabil diese Funktion läuft!
Der Code für das MergeUp-Feature beginnt in Zeile 306, die relevanten Zeilen sind 311-313:
Statt oCurs.goUp kannst Du dann ja auch "oCurs.goRight 4, True" schrieben, dann werden die Zelle1 plus die 4 rechts liegenden Zeilen vom Cursor erfasst und mit .mergeRange verbunden.

Code: Alles auswählen

...
with myTable
...
0306   ' feature ###MERGE_UP### - if a cell contains "###MERGE_UP###", it will be merged up with the corresponding cell of the previous row
0307   If oThisResultset.getstring(ii) = "###MERGE_UP###" Then
0308       .getCellByPosition(ii-1,oThisResultset.row + iStartAtRow -1).setstring("") ' in case somebody entered something at row1 it's deleted
0309       if oThisResultset.row > 2 then ' it makes no sense to connect the first row to the title-row, and prevents errors if row=1
0310           on error goto createCursorByCellName_Error
0311 ==>           oCurs  = .createCursorByCellName(chr(64+ii) & (oThisResultset.row + iStartAtRow ))
0312 ==>           oCurs.goUp 1, True
0313 ==>           oCurs.mergeRange
...
Die .createCursorByCellName(chr(64+ii) & (oThisResultset.row + iStartAtRow )) - muss natürlich auf die richtige erste Zelle zeigen. Akzeptiert werden da also Werte wie: .createCursorByCellName("A3") etc. (der String wird in der BRX bloß etwas kompliziert hergeleitet, da ja die Ergebnistabelle iteriert wird. "chr(64+ii)" ermittelt den Buchstaben und der Rest die Zahl...

Original Code zu finden (falls Du die BRX installiert hast BaseReportExtension (extensions.libreoffice.org)): Meine Makros & Dialoge / BaseReportExtension / BRX_MAIN / function BRX_BerichtErstellen
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: com.sun.star.text.TextTables

Beitrag von gogo » Do 18. Jan 2018, 00:35

schön zu hören. Es hat als Spielerei angefangen und als ich gesehen hab', wie einfach man in Writer-Dokumente eingreifen kann gab eines das andere...
Der "Bericht" ist ja eigentlich das was der User haben will, und daher sollte LO im Base-Projekt viel mehr Wert auf die Präsentierbarkeit von Daten Wert legen. Vor allem weil ja mit Writer, Impres und Calc 3 Power-Formate inklusive pdf-Export zur Verfügung stehen.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten