Seite 1 von 1
BorderLine.Color mittels Python setzen.
Verfasst: So 7. Jul 2024, 20:38
von StefKe
Hallo, wie kann die Farbe der unteren Rahmenlinie per Python gesetzt werden?
Code: Alles auswählen
oDoc = XSCRIPTCONTEXT.getDocument()
oBorder = CreateUnoStruct("com.sun.star.table.BorderLine") # Fehler
def range_border_color():
oSheet = oDoc.Sheets[0]
oBorder.Color = 16711680
oSheet.getCellRangeByPosition(1,1,10,1).BottomBorder.Color = 16711680 # bringt nix
if __name__ == "__main__":
range_border_color()
bringt's leider nicht...
Danke für jede Hilfe
Stefan
Re: BorderLine.Color mittels Python setzen.
Verfasst: Mo 8. Jul 2024, 09:12
von karolus
Hallo
Das schöne an
einer jupyter-notebook Sitzung ist ja die Möglichkeit zeitlich|räumlich-getrennt Code auf quasi-Modulebene auszuführen (was sonst eher nicht möglich ist …), um das hier mal beispielshaft aufzudröseln:
- Ich selektiere irgendeinen Zellbereich und definiere manuell zb. den äusseren Rahmen drumrum in vier verschiedenen Farben|Stilen|Breiten
- jetzt kopiere ich einfach die …TableBorder-Struktur global in die Variable »border« und zwar mit:
Code: Alles auswählen
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.CurrentSelection
border = sel.TableBorder
- Optional: Frühstücken|Einkaufen|…| anderes CalcDokument öffnen
nicht optional: einen oder mehrere Zellbereiche selektieren und dann:
Code: Alles auswählen
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.CurrentSelection
sel.TableBorder = border
Code: Alles auswählen
oBorder = CreateUnoStruct("com.sun.star.table.BorderLine") # Fehler
CreateUnoStruct gibts nicht gratis in python, wenn dann:
Code: Alles auswählen
import uno
oBorder = uno.createUnoStruct("com.sun.star.table.BorderLine")
aber »Structs« kannst du auch direkt importieren, siehe meinen übernächsten Beitrag.
Re: BorderLine.Color mittels Python setzen.
Verfasst: Mo 8. Jul 2024, 09:18
von nitja
StefKe hat geschrieben: ↑So 7. Jul 2024, 20:38
… Farbe der … Rahmenlinie …
Python …
keine Ahnung re. Python-Spezialitäten…
Code: Alles auswählen
oDoc = XSCRIPTCONTEXT.getDocument()
oBorder = CreateUnoStruct("com.sun.star.table.BorderLine") # Fehler
…
… aber braucht LO nicht "com.sun.star.table.BorderLine
2"?
Re: BorderLine.Color mittels Python setzen.
Verfasst: Mo 8. Jul 2024, 09:41
von karolus
nitja hat geschrieben: ↑Mo 8. Jul 2024, 09:18
StefKe hat geschrieben: ↑So 7. Jul 2024, 20:38
… Farbe der … Rahmenlinie …
Python …
keine Ahnung re. Python-Spezialitäten…
Code: Alles auswählen
oDoc = XSCRIPTCONTEXT.getDocument()
oBorder = CreateUnoStruct("com.sun.star.table.BorderLine") # Fehler
…
… aber braucht LO nicht "com.sun.star.table.BorderLine
2"?
Unabhängig von Basic|python: das ist uno! …BorderLine2 setzt auf …BorderLine auf, hat aber zusätzlich weitere Attribute.
genauso wie
css.table.TableBorder2 noch ein paar Attribute auf
css.table.TableBorder draufsetzt.
Du kannst natürlich nicht …TableBorder2 klonen und die geklonte Struktur woanders in eine ……TableBorder hineinwürgen!
Re: BorderLine.Color mittels Python setzen.
Verfasst: Mo 8. Jul 2024, 10:31
von karolus
Nach den speziellen Hacks die man sich (mit jupyter-notebook) in der Entwicklungsphase erlauben darf, das ganze from scratch und brav in Funktionen verpackt:
Code: Alles auswählen
from com.sun.star.table import BorderLine, TableBorder
def red_bottom_line():
line = BorderLine()
line.Color = int("ff0000",16) #red
line.OuterLineWidth = 100 # 100 was?
border = TableBorder()
border.BottomLine = line
border.IsBottomLineValid = True
return border
def main(*_):
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.Sheets["Tabelle2"]
cellrange = sheet["A14:F14"]
cellrange.TableBorder = red_bottom_line()
Re: BorderLine.Color mittels Python setzen.
Verfasst: Mo 8. Jul 2024, 15:17
von karolus
Hallo
Meine Beispiele beziehen sich alle im Prinzip auf mehrzeilige Bereiche in denen aussschliesslich die (untere) Aussenlinie angesprochen wird, falls du aber entweder nur einzeilige Bereiche garantieren kannst oder in jeder Zeile einen farbigen Unterrand möchtest dann brauchst du kein …TableBorder… sondern kannst direkt Zellbereich.BottomBorder ansprechen.
Re: BorderLine.Color mittels Python setzen.
Verfasst: Di 9. Jul 2024, 09:35
von StefKe
Hallo, danke an alle ... der Code läuft.
Das hier ist ein wirklich sehr hilfsbereites Forum
Stefan