Seite 1 von 1

[gelöst]automatische (bedingte) Tabellenformatierung

Verfasst: Mi, 10.06.2009 08:18
von martinunver
ich bin dabei unsere Dokumentation, die momentan auf MS Word aufbaut in ein Doku-Wiki zu transferieren.
Um damit druckbare Dokumente zu erstellen gibt es das genial ODT plugin, dass mir die Wiki-Seiten als OpenOffice Dokumente ausgibt, was sehr gut funktioniert und grundsätzlich auch gut formatierbar ist.
Ich hab nur folgendes Problem:
Die Tabellen, die eingefügt werden sind nicht formatiert, damit meine ich die Rahmen und Zellenhintergründe. Für die Tabellenüberschriften und den Tabellentext gibt es aber Absatzvorlagen, die auch benutzt werden.
Ich weiß, ich kann mit Autoformat Tabellen manuell recht einfach formatieren, ich möchte nur den manuellen Schritt vermeiden.

Gibt es eine Möglichkeit Tabellenformatierung bezüglich der verwendeten Absatzformate des Tabellentextes zu bedingen?
Könnte evtl. ein Makro sowas erledigen?

Achja, natürlich muss ich 3 verschieden Tabellenformate benutzen:
  • Tabellenüberschriften nur oben
  • Tabellenüberschriften nur links
  • Tabellenüberschriften oben und links

Re: automatische (bedingte) Tabellenformatierung

Verfasst: Mo, 15.06.2009 14:28
von martinunver
jetzt hab ich den Vormittag mal mich mit Makroprogrammierung beschäftigt, steh aber gerade auf dem Schlauch.

Als Vorlage hab ich mal das Makro "colorTable" von Winfried Rohr verwendet.

mit

Code: Alles auswählen

oRow.setPropertyValue("BackColor", RGB(179,179,179) )
kann ich z.B. die Hintergrundfarbe ändern, was schonmal klappt.

Was ich nicht gebacken bekomme ist die Umrandung zu ändern. Ich weiß dass das PropertyValue "BorderLine" heißt, aber ich weiss nicht, wie ich die einzelnen Linien ändern.
Vielleicht hat jemand von Euch eine Codezeile parat, die mir die Anwendung zeigt.

Re: automatische (bedingte) Tabellenformatierung

Verfasst: Mo, 15.06.2009 14:55
von komma4
Du kannst die Eigenschaften für die Tabelle oder eine einzelne Zelle setzen (eine Tabellenzeile hat die Eigenschaften nicht).


Suche doch mal im englischen Forum nach Beispielen ("borderline" in der Macro-Abteilung: 48 Treffer)

Viel Erfolg!

Re: automatische (bedingte) Tabellenformatierung

Verfasst: Di, 16.06.2009 09:19
von martinunver
Danke Winfried,

ich bin dann aber auch bei sun fündig geworden.

Und damit ich Euch die Lösung meines Problems nicht vorenthalte hier das fertige Macro:

Code: Alles auswählen

Sub Tableformat
  
  oDoc = thiscomponent
   Cursor = oDoc.Text.createTextCursor()
   oTables = oDoc.GetTextTables()
   
   ' get tables
   for i = 0 to oTables.Count -1
   	oTable = oTables(i)
   	oRows = oTable.rows
   	oCols = oTable.columns
   	for AnzahlRows = 0 to oRows.Count -1
	for AnzahlCols = 0 to oCols.Count -1
   	  
   	  	sName = thiscomponent.texttables.getByIndex(i).getCellByPosition(AnzahlCols,AnzahlRows).createTextCursor.ParaStyleName

		oBorder = oTable.Tableborder
   		oBorderline = oBorder.TopLine
		oBorderline.color = &H000063ac
		oBorderline.outerlinewidth = 5
		oCell = oTable.getCellByPosition(AnzahlCols,AnzahlRows)
	
		if sName = "Table Heading" then
			BackrColor = &H000063ac
		else
			BackrColor = &H00e6e6e6
   		endif			
		   	oCell.BackColor = BackrColor

		if AnzahlRows = 0 then	
			oCell.topBorder = oBorderline
		endif					
		
		if AnzahlRows = oRows.Count -1 then	
			oCell.bottomBorder = oBorderline
		endif
		
		if AnzahlCols = 0 then
			oCell.leftBorder = oBorderline
		endif
		
		if AnzahlCols = oRows.Count -1 then
			oCell.rightBorder = oBorderline
		endif
			
  	next AnzahlCols
  	next AnzahlRows
  next i 
End Sub