leere zeile in der texttabelle löschen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: leere zeile in der texttabelle löschen

Re: leere zeile in der texttabelle löschen

von kannenklaus » Fr, 29.05.2009 20:24

hallo jürgen,

an den holzhammer habe ich auch schon gedacht. wieder SUPI und DANKE!

grüße

klaus

Re: leere zeile in der texttabelle löschen

von turtle47 » Fr, 29.05.2009 18:52

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. :oops:

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:

Code: Alles auswählen

On error resume next
:lol:

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

von kannenklaus » Fr, 29.05.2009 12:08

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

von turtle47 » Fr, 29.05.2009 08:03

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? :wink:

Jürgen

leere zeile in der texttabelle löschen

von kannenklaus » Do, 28.05.2009 21:20

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

Nach oben