Seite 1 von 1
leere zeile in der texttabelle löschen
Verfasst: Do, 28.05.2009 21:20
von kannenklaus
hallo zusammen,
der unten genannte code sollte auch gezielt nach einer kpl. leeren zeilen in der tabelle suchen und diese dann löschen. geht das?
Code: Alles auswählen
Sub SwriterZeileOptHoehe
Dim oDoc as Object
Dim oAlleTabellen as Object, oEinzeleneTab as Object
Dim oAlleZeilen as Object, oEinzelneZeile as Object
Dim iAnzTab as integer, iAnzZe as integer
oDoc=ThisComponent
If Not oDoc.SupportsService("com.sun.star.text.TextDocument") then exit sub
oAlleTabellen=oDoc.getTextTables
'--for-Schleife für alle Tabellen
for iAnzTab=0 to oAlleTabellen.Count-1
oEinzeleneTab=oAlleTabellen.getByIndex(iAnzTab)
oAlleZeilen=oEinzeleneTab.getRows
'--for-Schleife für alle Zeilen der gerade aktiven Tabelle
for iAnzZe=0 to oAlleZeilen.Count-1
oEinzelneZeile=oAlleZeilen.getByIndex(iAnzZe)
'oEinzelneZeile.IsAutoHeight=true
oEinzelneZeile.SizeType=0
next iAnzZe
next iAnzTab
End Sub
freue mich auf eine antwort!
grüße
klaus
Re: leere zeile in der texttabelle löschen
Verfasst: Fr, 29.05.2009 08:03
von turtle47
Hallo Klaus,
kannenklaus hat geschrieben:geht das?
Warum nicht?
Code: Alles auswählen
Sub SwriterZeileLoeschen
Dim oDoc as Object
Dim oAlleTabellen as Object, oEinzeleneTab as Object
Dim oAlleZeilen as Object, oEinzelneZeile as Object
Dim iAnzTab as integer, iAnzZe as integer, e as integer
oDoc=ThisComponent
If Not oDoc.SupportsService("com.sun.star.text.TextDocument") then exit sub
oAlleTabellen=oDoc.getTextTables
for iAnzTab = 0 to oAlleTabellen.Count-1
oEinzeleneTab = oAlleTabellen.getByIndex(iAnzTab)
oAlleZeilen = oEinzeleneTab.getRows
myRows=oEinzeleneTab.rows
myColumns=oEinzeleneTab.columns
AnzahlRows = myRows.Count
AnzahlColumns = myColumns.count
for iAnzZe = AnzahlRows -1 to 0 step -1
e = 0
for iAnzSp = 0 to AnzahlColumns -1
myCell = oEinzeleneTab.getCellByPosition(iAnzSp,iAnzZe)
if myCell.String <> "" Then
e = 1
end if
next iAnzSp
if e = 0 Then
rows=oEinzeleneTab.getrows()
rows.removeByIndex(iAnzZe,1)
end if
next iAnzZe
next iAnzTab
End Sub
Shifttaste kaputt?
Jürgen
Re: leere zeile in der texttabelle löschen
Verfasst: Fr, 29.05.2009 12:08
von kannenklaus
hallo jürgen,
wie immer SUPER!! danke. ein fall kommt noch hinzu:
bei verbundenen zellen verursacht der zugriff mit "getCellByPosition" einen fehler. andrew ptionyak meint, dass man mit der methode
getCellByName vermeiden kann. wie sieht dann der code aus?
freue mich auf eine antwort.
danke klaus
Re: leere zeile in der texttabelle löschen
Verfasst: Fr, 29.05.2009 18:52
von turtle47
Hallo Klaus,
kannenklaus hat geschrieben:wie immer SUPER!!
Danke für das Lob.
kannenklaus hat geschrieben:bei verbundenen zellen
Sorry, darüber hatte ich überhaupt nicht nachgedacht.
kannenklaus hat geschrieben:andrew ptionyak meint, dass man mit der methode getCellByName vermeiden kann.
Du meinst bestimmt das hier:
The advantage of getCellByName() is its ability to retrieve cells even in tables with split or merged cells.
Das nützt in diesem Fall aber leider nichts.
Irgendwie habe ich es nicht hinbekommen die Anzahl der Spalten jeder einzelnen Zeile zu bekommen damit die Fehlermeldung nicht kommt.
Deshalb hier erstmal die Holzhammermethode:
Code: Alles auswählen
Sub SwriterZeileOptHoehe
Dim oDoc as Object
Dim oAlleTabellen as Object, oEinzeleneTab as Object
Dim oAlleZeilen as Object, oEinzelneZeile as Object
Dim f as integer
On error resume next
oDoc=ThisComponent
If Not oDoc.SupportsService("com.sun.star.text.TextDocument") then exit sub
oAlleTabellen=oDoc.getTextTables
for iAnzTab = 0 to oAlleTabellen.Count-1
oEinzeleneTab = oAlleTabellen.getByIndex(iAnzTab)
oAlleZeilen = oEinzeleneTab.getRows
myRows=oEinzeleneTab.rows
myColumns=oEinzeleneTab.columns
AnzahlRows = myRows.Count
AnzahlColumns = myColumns.count
for iAnzZe = AnzahlRows -1 to 0 step -1
e = 0
for iAnzSp = 0 to AnzahlColumns -1
myCell = oEinzeleneTab.getCellByPosition(iAnzSp,iAnzZe)
if myCell.String <> "" Then
e = 1
end if
next iAnzSp
if e = 0 Then
rows=oEinzeleneTab.getrows()
rows.removeByIndex(iAnzZe,1)
end if
next iAnzZe
next iAnzTab
End Sub
Der Zauberspruch heisst in diesem Fall:
Vielleicht kann uns ja jemand unter die Arme greifen wie man die Anzahl der Spalten jeder
einzelnen Zeile ausliest. Würde mich echt interessieren.
Bis dann.
Jürgen
Re: leere zeile in der texttabelle löschen
Verfasst: Fr, 29.05.2009 20:24
von kannenklaus
hallo jürgen,
an den holzhammer habe ich auch schon gedacht. wieder SUPI und DANKE!
grüße
klaus