Um Zellbereich zu sortieren gibt es die Methode "Sort" eines Bereiches.
Um diese Methode zu verwenden muss man aber einige Parameter setzen. Dazu werden zwei
neue Structs erzeugt. Einer für bestimmte Properties und einer für die Festlegung der
Sortierfeldes. Man kann auch mehrere Sortierfelder verwenden.
Beim Sortierfeld wird die Spalte, die Sortierrichtung (Aufwärts/Abwärts) und der Feldtyp
bestimmt.
Mögliche Feldtypen sind:
com.sun.star.util.SortFieldType.ALPHANUMERIC, Sortierung von Text
com.sun.star.util.SortFieldType.NUMERIC, Sortierung von Zahlen
com.sun.star.util.SortFieldType.AUTOMATIC, Typ wird erkannt
Die Sortierrichtung wird mit "isascending" festgelegt.
True = Aufsteigend
False = Absteigend
Das Feld wird durch die Position, beginnend bei 0, festgelegt.
Zusätzlich kann man noch festlegen ob Groß- und Kleinschreibung beachtet wird. Dies
geht
aber auch über die Sortierkriterien.
Als nächstes müssen die Properties ergänzt werden.
"SortFields", für das neue erzeugt Struct
"SortColumns", false Zeilen werden sortiert, true Spalten.
"ContainsHeader", wenn true wird die erste Zeile nicht mitsortiert
"IsCaseSensitive", Groß-/Kleinschreibung
Sub SortiereBereich
Dim SortProps(2) As new com.sun.star.beans.PropertyValue
Dim SortFeld(0) As new com.sun.star.table.TableSortField
oDatei = ThisComponent
oSheet = oDatei.Sheets(0)
oBereich = oSheet.getCellRangeByName("A1:D20")
SortFeld(0).Field = 0
SortFeld(0).IsAscending =
True
SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
SortProps(0).Name
= "SortFields"
SortProps(0).Value
= SortFeld()
SortProps(1).Name
= "SortColumns"
SortProps(1).Value
= False
SortProps(2).Name
= "ContainsHeader"
SortProps(2).Value
= true
oBereich.Sort(SortProps())
End Sub
Möchte man über zwei oder drei Felder (mehr lässt OO/SO nicht zu) sortieren muss
dies im
Struct entsprechend festgelegt werden.
Dim SortFeld(1) As new com.sun.star.table.TableSortField
SortFeld(0).Field = 0
SortFeld(0).IsAscending =
True
SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
SortFeld(1).Field = 1
SortFeld(1).IsAscending =
True
SortFeld(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC