[gelöst]automatische (bedingte) Tabellenformatierung

Das Textverarbeitungsprogramm

Moderator: Moderatoren

martinunver
Beiträge: 3
Registriert: Di, 09.06.2009 16:58

[gelöst]automatische (bedingte) Tabellenformatierung

Beitrag 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
Zuletzt geändert von martinunver am Di, 16.06.2009 09:20, insgesamt 1-mal geändert.
martinunver
Beiträge: 3
Registriert: Di, 09.06.2009 16:58

Re: automatische (bedingte) Tabellenformatierung

Beitrag 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.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: automatische (bedingte) Tabellenformatierung

Beitrag 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!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
martinunver
Beiträge: 3
Registriert: Di, 09.06.2009 16:58

Re: automatische (bedingte) Tabellenformatierung

Beitrag 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


Antworten