wir generieren odt Dokumente mit Hilfe von Java und Jodreports (eine template Lösung für ODF-Dateien). NAch der Generierung können wir noch beliebige Macros ausführen lassen.
Was ist unser Problem:
Die Tabellen sind in ODF Zeilenbasiert - wie die folgende:
a b c d
1 2 3 4
5 6 7 8
Nun suchen wir eine Möglichkeit diese Tabelle "zukippen". Hierbei werden die Zeilen zu Spalten:
a 1 5
b 2 6
c 3 7
d 4 8
Folgendes sollte Berücksichtigt werden:
- Zellenformatierung sollte übernommen werden
- Spalten müssen auf die Seite ausgerichtet werden.
Es kam in den Sinn, dass wir dies mit Hilfe eines Macros lösen können. Einen ersten Versuch (bei weitem noch nicht am Ziel habe ich angehängt)
Code: Alles auswählen
Sub Test
Dim Doc As Object
Dim Table As Object
Dim Cursor As Object
Dim Rows As Object
Dim RowIndex As Integer
Dim Cols As Object
Dim ColIndex As Integer
Dim CellName As String
Dim Cell As Object
Dim myCell1 As Object
Dim myCell2 As Object
Dim myText As String
Dim TextTables As Object
Doc = StarDesktop.CurrentComponent
ThisComponent.createInstance("com.sun.star.text.TextTable")
Dim oCursor As Object
Dim oTable As Object
Dim oText As Object
oText = ThisComponent.Text
oCursor = oText.createTextCursor()
oCursor.gotoStart(FALSE)
oTable = oDocument.createInstance("com.sun.star.text.TextTable")
oTable.initialize(5,9)
oText.insertTextContent(oCursor, oTable, FALSE)
TextTables = ThisComponent.getTextTables()
For I = 0 to TextTables.count - 1
Table = TextTables(I)
If Left(Table.name,3) = "alt" then
Rows = Table.getRows
Cols = Table.getColumns
For RowIndex = 0 To Rows.getCount()-1
For ColIndex = 0 To Cols.getCount()-1
If RowIndex < ColIndex then
myCell1 = Table.getCellByPosition(RowIndex,ColIndex)
myCell2 = Table.getCellByPosition(ColIndex,RowIndex)
myText = myCell1.String
myCell1.String = myCell2.String
myCell2.String = myText
end If
Next
Next
End If
Next
End Sub
Vielen Dank im Voraus.
Thies.