[GastForen Programme Print/Bildbearbeitung Adobe InDesign Leere TABELLEN-Zeilen (per GREP?) entfernen

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

Leere TABELLEN-Zeilen (per GREP?) entfernen

Dirk S
Beiträge gesamt: 72

18. Nov 2013, 15:19
Beitrag # 1 von 13
Bewertung:
(9712 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Trotz längerer Suche älterer Beiträge konnte ich keine funktionierenden Beitrag zu meinem Problem finden:

Eine Tabelle mit 6 Spalten und 19 Zeilen ist nach Datenzusammenführung mit minimal 4 bis maximal 19 Zeilen gefüllt. Es ergeben sich je nach Datensatz Tabellenblöcke, die weniger als 19 Werte enthaltene Zeilen (in verschiedenen Spalten) aufweisen und somit Leezeilen sind.
Die Leerzeilen sollten (mit GREP? per Script?) einfach gelöscht werden können Final sollte sich der Textrahmen wieder automatisch an die neue Tabellenblock-Höhe anpassen.

Da dies durchaus öfter vorkommen sollte, baue ich darauf, dass es eine Lösung hierfür gibt? Jede Hilfe ist willkommen.

Besten Dank im Voraus
Dirk
X

Leere TABELLEN-Zeilen (per GREP?) entfernen

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Nov 2013, 15:31
Beitrag # 2 von 13
Beitrag ID: #519861
Bewertung:
(9698 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dirk,

wo ist dein Beispiel als .idml mit vorher / nachher?


als Antwort auf: [#519860]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Dirk S
Beiträge gesamt: 72

18. Nov 2013, 16:56
Beitrag # 3 von 13
Beitrag ID: #519863
Bewertung:
(9650 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

wollte ja etwas hochladen – for members only ... daher jetzt der link: https://www.dropbox.com/s/2zecqgdpwfutb64/DS-LeereTabellenZeilen-entfernen.idml

Zur Erläuterung: Seite 1+2= Ergebnis nach Generierung (lediglich Test), Seite 3 das finale Ergebnis. Insgesamt werden es um die 500 "Tabellenblöcke".

Besten Dank fürs Ansehen.
Dirk


als Antwort auf: [#519861]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Nov 2013, 22:57
Beitrag # 4 von 13
Beitrag ID: #519877
Bewertung:
(9586 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dirk,

wahrscheinlich geht es eleganter bzw. einfacher. Meine Versuch wäre folgender. Bitte mal testen u. Rückmeldung.

Code
main(); 
function main() {

var curDoc = app.documents[0];
var allTables = curDoc.stories.everyItem().tables.everyItem().getElements();

for ( var t = 0; t < allTables.length; t++ ) {
var curTable = allTables[t];

for ( var r = curTable.rows.length-1; r > 0 ; r-- ) {
var curRow = curTable.rows[r];
var helper = true;
for (var c = 0; c < curRow.cells.length; c++) {
var curCell = curRow.cells[c];
if ( curCell.contents != "" && curCell.contents.length != 2 ) {
helper = false;
continue;
}
}
if ( helper == true ) {
curRow.remove();
}
}
curTable.parent.fit(FitOptions.FRAME_TO_CONTENT);
}
}



als Antwort auf: [#519863]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Dirk S
Beiträge gesamt: 72

18. Nov 2013, 23:01
Beitrag # 5 von 13
Beitrag ID: #519878
Bewertung:
(9579 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

vielen Dank für die "Nachtschicht". Werde es morgen früh mal testen und Rückmeldung geben.

Sehe ich das richtig, dass in diesem Fall mit GREP keine Lösung möglich ist? Hatte da nämlich gesucht, aber nichts gefunden, das in Tabellen Spalten oder Zeilen anspricht.

Gut, bis morgen dann.
Gruß
Dirk


als Antwort auf: [#519877]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Nov 2013, 23:09
Beitrag # 6 von 13
Beitrag ID: #519879
Bewertung:
(9578 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Man könnte sicherlich Stellen per GREP suchen, aber keine Zeilen löschen.

Meine Skripte sind immer etwas mit Vorsicht zu genießen, da ich hier der Skriptanfänger bin ;-)

Ich prüfe, ob der Inhalt einer Zelle leer ist und ob das gleiche für die Zellen nebenan gilt. Ist das der Fall, wird eine Zeile gelöscht. Kleiner Haken: Manche Zellen sind nicht leer, denn da sind die Steuerzeichen von der Datenzusammenführung drin u. das muss auch berücksichtigt werden.


als Antwort auf: [#519878]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Dirk S
Beiträge gesamt: 72

19. Nov 2013, 06:54
Beitrag # 7 von 13
Beitrag ID: #519880
Bewertung:
(9505 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Kai,

du magst vielleicht Scriptanfänger sein – deine Arbeit jedenfalls ist tadellos. Es jobbt genau wie gewünscht. Was soll ich sagen? Perfekt – und besten Dank!

Da meine Tabellen keine unerwünschten Steuerzeichen enthalten werden (dafür habe ich im Vorfeld schon gesorgt) sollte alles wie am Schnürchen klappen.

Vielen Dank nochmals - Problem gelöst!

Gruß
Dirk


als Antwort auf: [#519879]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Kai Rübsamen
  
Beiträge gesamt: 4684

19. Nov 2013, 07:55
Beitrag # 8 von 13
Beitrag ID: #519881
Bewertung:
(9488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Dirk,

das freut mich. Du könntest 'continue' noch gegen 'break' ersetzen. Viell. wird es dadurch noch etwas schneller. Momentan werden alle Zellen untersucht. Ich wollte eigentlich nach der ersten Fundstelle aussteigen.


als Antwort auf: [#519880]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Uwe Laubender
Beiträge gesamt: 5317

19. Nov 2013, 09:03
Beitrag # 9 von 13
Beitrag ID: #519883
Bewertung:
(9471 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Dirk!

Habe mir Deine angehängte IDML-Datei gerade eben mal angesehen.
Was mich wundert: Wo sind denn die Umlaute im Text hingekommen?

Klar, ich hab' die benötigten Schriften nicht zur Verfügung. Aber dass die Umlaute ("ä" wie "ü") gleichermaßen durch ein "?" ersetzt werden, hat mich nun schon etwas gewundert.

Ist da was mit der Datenzusammenführung schiefgelaufen?

Siehe Screenshot aus InDesign CS 5.5 unmittelbar nach dem Öffnen der IDML-Datei.


als Antwort auf: [#519880]
Anhang:
TestDatei_TabelleNachDatenzusammenfuehrung.png (27.2 KB)

Leere TABELLEN-Zeilen (per GREP?) entfernen

Dirk S
Beiträge gesamt: 72

19. Nov 2013, 09:33
Beitrag # 10 von 13
Beitrag ID: #519885
Bewertung:
(9449 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

hatte mich schon gewundert, dass sich noch keiner an den korrupten Umlauten gestört hat.

Da ich die .idml nur auf die Sschnelle zur Problemlösung erstellt habe, war es mir egal ob die Umlaute nun korrekt dargestellt werden. Für das Problem an und für sich war es unerheblich.
Es ist nur eine Einstellung in der Zeichencodierung und alles ist ok. Beim Auslesen einer .csv ist es je nach verwendetem OS oder verwendeter Software (habe kein Excel) notwendig, beim Import die korrekte Codierung auszuwählen. Das habe ich gestern auf die Schnelle nicht gemacht. Daher die "zerschossenen" Umlaute. Im finalen Dokument stimmt natürlich alles.

Aber besten Dank für den Hinweis, hätte wieder ein neues Problem aufwerfen können .. :-)

Gruß
Dirk


als Antwort auf: [#519883]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Uwe Laubender
Beiträge gesamt: 5317

19. Nov 2013, 11:09
Beitrag # 11 von 13
Beitrag ID: #519889
Bewertung:
(9413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Kai!

Ja, das mit den Sonderzeichen in den ansonsten leeren Zellen, hat mich auch etwas zum Grübeln gebracht.

Mit einer GREP Suche sind die ja nicht zu bekommen.

Code
\x{FEFF} 


Die TEXT Suche findet die schon:

Code
<FEFF> 


Dein Script könnte man dahingehend modifizieren, dass man diese Sonderzeichen zunächst mal eliminiert und anschließend nur die "contents"-Eigenschaft der Tabellenreihen untersuchen müsste.

Ob's das dann schneller macht?

Oder wird's gefährlich oder stört den Workflow, wenn die Sonderzeichen in den Zellen mit regulärem Inhalt gelöscht werden?

Hier jedenfalls mal ein ausführlich kommentierter Script-Schnipsel zum Thema:

Code
main();  
function main() {

var curDoc = app.documents[0];
var allTables = curDoc.stories.everyItem().tables.everyItem().getElements();

//Die TEXT Suchen/Ersetzen-Parameter zurücksetzen:
app.findTextPreferences = app.changeTextPreferences = null;

//TEXT-Suche vorbereiten: Suche nach dem Special Character: <FEFF>:
app.findTextPreferences.findWhat = "<FEFF>";

//TEXT-Ersetzen vorbereiten: Leerer String (= Ergebnis der Suche löschen):
app.changeTextPreferences.changeTo = "";

//Suche/Ersetzen ausführen:
//(Ausschließlich in den Tabellen des Dokuments)
curDoc.stories.everyItem().tables.everyItem().changeText();

//Die TEXT Suchen/Ersetzen-Parameter zurücksetzen:
app.findTextPreferences = app.changeTextPreferences = null;


//Schleife durch die Tabellen, um leere Tabellenzeilen aufzuspüren.


for ( var t = 0; t < allTables.length; t++ ) {

var curTable = allTables[t];

//Schleife durch die Tabellenzeilen von hinten nach vorne.

//ANMERKUNG: Tabellenzeile 1 (Index [0]) wird ausgelassen: r > 0 anstatt: r >= 0
//1. Fall: Die gesamte Tabelle ist leer
//Der Versuch ALLE Tabellenzeilen zu löschen, würde einen Fehler werfen
//2. Der Tabellenkopf (hier im Beispiel eine Zeile) soll nicht untersucht werden.

for ( var r = curTable.rows.length-1; r > 0 ; r-- ) {
var curRow = curTable.rows[r];

//Der "contents" aller Zellen in der Tabellenzeile wird zu einem String zusammengezogen.
//Ohne Trennzeichen. Ist der String leer, ist auch die Zeile leer. Darf deshalb gelöscht werden.

//Ausnahme: Besteht die Zeile nur aus einer Zelle, haben wir keinen Array vor uns,
//der sich mit join("") zu einem String zusammensetzen ließe.

if(curRow.cells.length > 1 && curRow.contents.join("") === ""){curRow.remove()};

//Die Ausnahme wird behandelt. Der "contents" der Zelle wird direkt abgefragt:

else if(curRow.cells.length === 1 && curRow.contents ===""){curRow.remove()};

};

//Anpassung des Textrahmens nach dem Löschen der leeren Zeilen:
//Funktioniert nur zuverlässing, weil die Beispielsdatei nur Tabellen enthält,
//die nicht über mehrere Textrahmen verteilt sind.

curTable.parent.fit(FitOptions.FRAME_TO_CONTENT);

};

};



als Antwort auf: [#519881]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Kai Rübsamen
  
Beiträge gesamt: 4684

19. Nov 2013, 18:48
Beitrag # 12 von 13
Beitrag ID: #519896
Bewertung:
(9323 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

vorbildlich ;-) Die Marker rauszuwerfen find ich gut. Ich hatte das auch versucht, hätte aber nicht gedacht, dass das mit der Textsuche geht.

Danke für deine Version u. die ausführlichen Kommentare.
[insider] Jetzt warten wir nur noch drauf, das Ralf anfängt zu scripten ;-) [/insider]


als Antwort auf: [#519889]

Leere TABELLEN-Zeilen (per GREP?) entfernen

Heike Burch
Beiträge gesamt: 1241

3. Feb 2016, 12:53
Beitrag # 13 von 13
Beitrag ID: #546582
Bewertung:
(7115 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Kai, lieber Uwe

funktionieren beide wunderbar! Danke.
Ist es möglich, dass nur der markierte Rahmen die tabelle bearbeitet?
Ich habe hier einige Jahresberichte und mag da ungern mit einem Wisch alle leeren Zeilen löschen.

Danke schon mal.


als Antwort auf: [#519896]
X