Libre Office

Tabellen-Layouts / Tabellenformate vereinheitlichen

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
Karli
Beiträge: 5
Registriert: Do 12. Nov 2026, 17:24

Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von Karli » Do 12. Nov 2026, 22:58

Hallo zusammen,

ich möchte eine Writer-Datei, die mehrere Tabellen mit unterschiedlichen Tabellen-Layouts / Tabellenformate enthält vereinheitlichen.
Jede Tabelle besteht aus 12 unterschiedlich breiten Spalten und unterschiedlich vielen Zeilen.
Die Daten in diesen Tabellen stammen aus einem Genealogie-Programm, lagen ursprünglich als HTML vor und wurden mit den Writer-Möglichkeiten in das .odt-Format konvertiert.

Ich habe die Tabellen nun erstmal händisch via Tabelleneigenschaften bearbeitet (nur die Spaltenbreiten), das Ergebnis ist für mich damit für die weitere Bearbeitung der Daten sehr gut geeignet.

Allerdings ist dies eine zeitraubende Vorgehensweise, die ich so weit wie möglich abkürzen möchte, zumal ich weitere Writer-Datein mit der gleichen Problematik vorliegen habe.

Bis jetzt habe ich aber keine Möglichkeit gefunden mein Vorhaben umzusetzen, ich weiß auch nicht, ob das überhaupt mit LibreOffice möglich ist.

Geht das und wenn ja wie? Ich bitte um Tipps/Lösungsansätze.
Grüße
Karli

F3K Total
* LO-Experte *
Beiträge: 2532
Registriert: So 10. Apr 2011, 10:10

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von F3K Total » Fr 13. Nov 2026, 09:32

Moin,
wenn ich dich richtig verstehe, hatten wir ein sehr ähnliches Thema bereits Mitte Oktober:

Synchronisation Spaltenbreiten über mehrere Tabellen

Da hatte ich ein Makro geschrieben, was die erste Tabelle in einer Datei als Mastertabelle nimmt, und die folgenden damit abgleicht. Das Makro kann man vermutlich relativ einfach an dein Problem anpassen.
Stelle ein, ggf. verfremdetes, Beispieldokument zur Verfügung, dann könnten wir mal schauen.

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2791
Registriert: Fr 10. Dez 2010, 10:01

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von karolus » Fr 13. Nov 2026, 13:38

Hallo
@F3K Total:
ich bin immer wieder (positiv) erstaunt darüber was du in Basic schaffst, ich hatte jetzt schon Probleme dabei das trotz Vorlage in netten python-Code zu übertragen :!: :!:

Code: Alles auswählen

def get_adjust( fields ):
    for field in fields:
        pv = f'{field.getPresentation(True)}#{field.VariableName}'
        if pv == 'Number range Tabelle#Table':
            return field.Anchor.ParaAdjust

def sync_text_tables(*_): 
    doc = XSCRIPTCONTEXT.getDocument()
    just = get_adjust((fields:=doc.TextFields))
    undo = 'sync_tables'
    doc.lockControllers()
    doc.UndoManager.enterUndoContext(undo)
    for field in fields:
        field.Anchor.ParaAdjust = just        
    tables = iter(doc.TextTables)
    first = next(tables)
    orient, width = first.HoriOrient, first.Width
    conf, count = first.TableColumnSeparators, first.Columns.Count
    while True:
        try:
            tab = next(tables)
            if (c:=tab.Columns.Count) < count:
                tab.Columns.insertByIndex(c,count-c)
            tab.TableColumnSeparators = conf
            tab.Width, tab.HoriOrient = width, orient
        except StopIteration:
            doc.unlockControllers()
            doc.UndoManager.leaveUndoContext()
            return
g_ExportedScripts = sync_text_tables,
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Karli
Beiträge: 5
Registriert: Do 12. Nov 2026, 17:24

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von Karli » Fr 13. Nov 2026, 14:12

Vielen Dank für den Link.
Hatte ich bei meinen Recherchen nicht gefunden.

Die Beschreibung liest sich sehr vielversprechend. Allerdings habe ich zur Makroprogrammierung (noch) keine Expertise.

Wie bereits erwähnt, habe ich verschiedene Writer-Dateien mit einer unterschiedlichen Anzahl von Tabellen und Tabellenlayouts.
Wäre es denn möglich, statt der Analyse der ersten Tabelle als Master, die Spaltenbreiten in einem Array abzulegen?
Das hätte für mich den Vorteil, dass ich verschiedene Makros nutzen könnte um die Tabellenlayouts zu synchronisieren. Ich bräuchte dann "nur" das jeweilige Array mit den Tabellenbreiten belegen.
Damit würde ich mir auch den jeweiligen Zeitaufwand für die Bearbeitung der 1. Tabelle für das gewünschte Layout sparen.
Die Ausrichtung der Tabellenbeschriftungen kann so bleiben wie sie ist, eine mittige Ausrichtung ist nicht nötig.

Diese Writer-Dateien sind Auswertungen aus dem Genealogieprogramm und werden regelmäßig aber immer im gleichen Layout generiert.
Dateianhänge
Beispiel.odt
(13.4 KiB) 29-mal heruntergeladen
Grüße
Karli

F3K Total
* LO-Experte *
Beiträge: 2532
Registriert: So 10. Apr 2011, 10:10

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von F3K Total » Fr 13. Nov 2026, 15:11

Hallo Karli,
ja, die Spaltenbreiten kann man in einem oder mehreren Arrays ablegen und das Makro auf die gewünschte/n Tabelle/n anwenden.
Ich habe heute keinen Zugriff auf meinen Rechner mehr, ggf. gucke ich morgen.

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2791
Registriert: Fr 10. Dez 2010, 10:01

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von karolus » Fr 13. Nov 2026, 16:00

Hallo
kreiere doch die verschiedenen Layouts als leere Tabellen in einer »Tabellenmuster.odt«

Code: Alles auswählen

sub main
  tables = thisComponent.TextTables
  
  url = "file:///pfad/zum/Tabellenmuster.odt"
  muster = stardesktop.loadComponentFromURL(url , "_blank",  0, array())
  'jetzt kannst du das gewünschte Layout über den Tabellennamen abrufen:'
  mtab = muster.TextTables.getByName("Tabelle2") 
  orient= mtab.HoriOrient
  width = mtab.Width
  conf = mtab.TableColumnSeparators 
  count = mtab.Columns.Count
  
  ' und ab hier zuweisen
  for each table in tables
     c=table.Columns.Count
     if c < count then
        table.Columns.insertByIndex(c,count-c)
     end if
     table.HoriOrient = orient
     table.Width  = width
     table.TableColumnSeparators = conf
  next
end sub

Edit 2026-11-13 18:40 typo berichtigt, falsche Zeile entfernt.
Zuletzt geändert von karolus am Fr 13. Nov 2026, 18:39, insgesamt 1-mal geändert.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Karli
Beiträge: 5
Registriert: Do 12. Nov 2026, 17:24

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von Karli » Fr 13. Nov 2026, 18:21

Hallo
danke für den Vorschlag.
Ich habe das Makro an der Beispiel.odt ausprobiert und 2 Fehlermeldungen bekommen:

1. BASIC-Syntaxfehler.
Symbol tab bereits anders definiert.
in:
c=tab.Columns.Count

habe das dann in:
c=mtab.Columns.Count
geändert und wurde danach nicht mehr beanstandet.

2. Lesefehler.
Diese Eigenschaft ist schreibgeschützt.
in:
table.Columns.Count = count

Damit kann ich leider nichts anfangen.

Die 1. Tabelle der Beispiel.odt wurde bereits synchronisiert, die beiden anderen noch nicht.
In der Zeile:
mtab = muster.TextTables.getByName("Tabelle2")
habe Tabelle1 eingetragen.

In der Tabellenmuster.odt habe ich für den Test nur eine Tabelle definiert.

Was müsste ich noch anpassen/ändern?

Nachtrag:
Ich habe die beiden Zeilen:
count = mtab.Columns.Count und
table.Columns.Count = count auskommentiert und dann lief das Makro bei der Beispiel.odt durch und hat die Layoutstruktur angepasst.

Alle Tabellen in einer Writerdatei sollen das selbe Layout haben. Die auskommentierten Zeilen habe ich so verstanden, dass sie Laufvariable über die Anzahl der Tabellen der Tabellenmusterdatei sind, was aber (wenn ich die Intension richtig verstehe) nicht erforderlich ist.

Passt das dann so?
Grüße
Karli

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2791
Registriert: Fr 10. Dez 2010, 10:01

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von karolus » Fr 13. Nov 2026, 18:51

Entschuldige … ich hatte das direkt hier, ohne Test editiert, die beiden Fehler hab ich oben rausgenommen, … (die angemeckerte Zeile war Unsinn die kann ganz weg )

In deiner »Muster.odt« kannst du jetzt nach Bedarf noch weitere Layouts kreieren, du solltest aber aufpassen das du die »Muster.odt« selbst nicht versehentlich per Makro synchronisierst :lol: :lol:

Ebenfalls Nachtrag: die Zeile »count = mtab.Columns.Count« solltest du nicht auskommentieren!

Edit: Die python-Variante als Screenshot, weil mich das fehlende Syntaxhighlighting nervt.

python_variante.png
python_variante.png (84.14 KiB) 227 mal betrachtet
Zuletzt geändert von karolus am Fr 13. Nov 2026, 20:00, insgesamt 3-mal geändert.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Karli
Beiträge: 5
Registriert: Do 12. Nov 2026, 17:24

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von Karli » Fr 13. Nov 2026, 19:02

Hallo karolus,

vielen Dank für Deinen Support.
Ich habe das Prinzip verstanden und kann nun die entsprechenden Einträge für die anderen Auswertungen anlegen.
Grüße
Karli

Karli
Beiträge: 5
Registriert: Do 12. Nov 2026, 17:24

Re: Tabellen-Layouts / Tabellenformate vereinheitlichen

Beitrag von Karli » Fr 13. Nov 2026, 23:07

Hallo,
ich habe nun die Musterlayouts definiert und auf alle Writer-Dateien angewendet.
Das Ergebnis ist super und eine drastische Arbeits- und Zeitersparnis.

Besten dank noch einmal an @F3K Total und @karolus.
Grüße
Karli

Open Office
Antworten