[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Tabellenformatierungen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Tabellenformatierungen

Peter Sauseng
Beiträge gesamt: 484

12. Apr 2021, 10:43
Beitrag # 1 von 1
Bewertung:
(3321 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen!

Aus verschiedenen Gründen möchte ich eine Vielzahl von Tabellen per Skript formatieren.

Dabei bekommen die Tabellenköpfe spezielle Formatierungen (z.B. anderer Zellversatz = klappt mit Zellenformat, links und rechts außen keine Linie, innen waagrecht und senkrecht: feine Linie, ganz oben und ganz unten: fette Linie)

Es gibt verschiedene Herangehensweisen, wie man Zellen in Tabellenköpfen per Skript manipulieren kann:

Code
var myHeadRows = myTable.rows.itemByRange(0, myNumberHeadRows); 

var myHeadCells = myTable.cells.itemByRange(myTable.rows.item(0).cells.item(0), myTable.rows.item(myNumberHeadRows).cells.item(-1));

var myHeadAllCells = myHeadRows.cells.everyItem();


Die Anzahl der Reihen, die als Tabellenkopf formatiert werden sollen, erhalte ich per Dialogfeldeingabe (myNumberHeadRows);

In der Variable myHeadRows sind deshalb alle Tabellenzeilen enthalten, die Tabellenkopfzeilen werden sollen.

In der Variable myHeadCells alle Zellen im Bereich: 1. Zelle der Tabelle bis letzte Zelle in der letzten Tabellenzeile der Tabellenkopfzeilen.

In der Variable myHeadAllCells habe ich versucht, alle Zellen von myHeadRows mit cells.everyItem() zu definieren.


Wenn ich nun diese Zeilen in Tabellenkopfzeilen umwandeln möchte (RowTypes.headerRow), funktioniert das mit "myHeadRows" nur, wenn es in diesen Zeilen keine Zellverbindungen gibt und mit "myHeadAllCells" gar nicht.
Das ist noch kein Problem, da es mit "myHeadCells" funktioniert, wüsste nur gerne den Grund dafür.


Das Zuweisen der inneren Spaltenlinien (innerColumnStrokeWeight, innerColumnStrokeType etc.) funktioniert mit "myHeadRows" und mit "myHeadCells", aber nicht mit "myHeadAllCells".
Das Zuweisen der inneren Reihenlinien funktioniert nur mit "MyHeadCells".

Zusammenfassung: mit "myHeadCells" kann alles bearbeitet werden: auch andere Einstellungen, wie Mindesthöhe, Zeichenformate etc.

Das Problem dabei ist aber die Zuweisung des Bereiches (1. Zelle der Tabelle bis letzte Zelle in der letzten Tabellenzeile der Tabellenkopfzeilen).
Wenn diese letzte Zelle in letzten Zeile aber vertikal mit der Zelle darüber verbunden ist, werden die Zellen rechts von dieser Zelle aber nicht in den Bereich aufgenommen und damit dort gewünschte Einstellungen nicht vorgenommen.

Das kann man zwar umgehen, indem man abfragt, ob die betroffene Zelle in der letzten Spalte der Tabelle steht. Man muss aber berücksichtigen, dass die letzte Zelle eine Zeile darüber auch nicht in der letzten Spalte der Tabelle stehen muss und dass es auch waagrecht verbundene Zellen geben kann.

Einfacher wäre also die Verwendung von myHeadRows.cells.everyItem().
Weiß jemand einen Grund, warum mit dieser Zuweisung so viele Einstellungen nicht per Skript vorgenommen werden können?

Gruß, Peter
X