[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Indesign, Tabellen und Zahlen

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

Indesign, Tabellen und Zahlen

olvradam
Beiträge gesamt: 249

4. Okt 2006, 12:50
Beitrag # 1 von 46
Bewertung:
(71388 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Ich liebe ID und hasse WORD. Ich würde am liebsten unsere Geschäftskorrespondenz mit ID abwickeln, gerade auch wegen der OpenType-Features. Was mich bisher noch davon abhält, ist, dass ich in den Tabellen keine einfachen Berechnungen vornehmen kann, sprich, keine Rechnungen erstellen kann.

Gibt es mittlerweile Wege, Scripts, Plugins etc., die mir helfen könnten? Nach meiner Recherche wahrscheinlich nicht, aber wer weiß …

Was wäre ein Workaround? Habt Ihr Erfahrung, was den REIBUNGSLOSEN Import und die Änderung von importierten Excel-Tabellen angeht? Auf welche Fallen muss man achten?

Liebe Grüße

Oliver

(Dieser Beitrag wurde von olvradam am 4. Okt 2006, 12:51 geändert)
X

Indesign, Tabellen und Zahlen

Kai Rübsamen
Beiträge gesamt: 4684

4. Okt 2006, 13:38
Beitrag # 2 von 46
Beitrag ID: #254590
Bewertung:
(71283 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Mir ist nicht bekannt, dass man Indesign durch Script oder plugin zum rechnen bringen kann!

> Was wäre ein Workaround? Habt Ihr Erfahrung, was den REIBUNGSLOSEN Import und die Änderung von importierten Excel-Tabellen angeht? Auf welche Fallen muss man achten?

Import- und Aktualisierungsmöglichkeiten haben wir hier in den letzten 2-3 Monaten ausführlich diskutiert. Nutze hierzu bitte die Suchfunktion des Forums. Inwieweit es allerdings Sinn macht, eine Rechnung in Excel zu schreiben und dann in Indesign zu aktualisieren ist eine andere Sache ... denn man hat ja nicht immer die gleiche Anzahl an Positionen usw.

Wenn du dir aber in Excel ein Template baust wird es sicher auch sauber in Indesign funktionieren.
Möglichkeit 1: Standardschrift Arial, Änderungen durch einfaches aktualisieren der Datei
Möglichkeit 2: Formatierung/Auszeichnungen einzelner Tabellenzellen, Aktualiesierung durch script PopTabFmClip

Ich schreibe meine Rechnungen auch in Indesign, ändere alle Werte per Hand und hatte leider dadurch auch schon mal den einen oder anderen Fehler!


als Antwort auf: [#254581]
(Dieser Beitrag wurde von ruebi am 4. Okt 2006, 13:43 geändert)

Indesign, Tabellen und Zahlen

Martin Fischer
  
Beiträge gesamt: 12783

4. Okt 2006, 14:12
Beitrag # 3 von 46
Beitrag ID: #254603
Bewertung:
(71260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Mir ist nicht bekannt, dass man Indesign durch Script oder plugin zum rechnen bringen kann!

Das ist durchaus möglich.
Dies zeigen ein paar Scriptbeispiele von http://www.hilfdirselbst.org/...ripte+-+Linksammlung unter der Überschrift "Berechnungen".

Die eigentliche Berechnung erfolgt dabei durch das Skript. Die der Berechnung zugrundeliegenden Zahlen und der Platz, wo das Ergebnis erscheinen soll, müssen dem Skript in Form einer eindeutigen Regel mitgeteilt werden. Dies geht z.B. über Zeichenformate (Zahlen/Stellen, die mit Zeichenformaten ausgezeichnet sind) oder über beschriebene (adressierte) Zellen einer Tabelle.

Hier ein einfaches Beispiel, in dem die Zahlen der letzten Spalte einer Tabelle (bis zur vorletzten Reihe) in die Zelle rechts unten summiert werden (der Cursor muß sich in einer Zelle der Tabelle befinden):
Code
// simpleTableCalculation.jsx  

if (app.selection[0].parent.constructor.name == "Cell"){
var myTable = app.selection[0].parent.parent;
var myLastCol = myTable.columns.length-1;
var myLastRow = myTable.rows.length-1;
var mySum = 0;
for (k = 0; k < myLastRow; k++) {
mySum += (myTable.columns[myLastCol].cells[k].contents.replace(",", "."))*1
}
myTable.columns[myLastCol].cells[myLastRow].contents = digitFormatter(mySum);
}

function digitFormatter(x) {
// Quelle: http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden#6
var k = (Math.round(x * 100) / 100).toString();
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.');
return k.substring(0, p) + ',' + k.substring(p+1, p+3);
}



als Antwort auf: [#254590]
(Dieser Beitrag wurde von Martin Fischer am 26. Mai 2007, 21:55 geändert)

Indesign, Tabellen und Zahlen

Martin Fischer
  
Beiträge gesamt: 12783

5. Okt 2006, 12:50
Beitrag # 4 von 46
Beitrag ID: #254791
Bewertung:
(71226 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vorhin bin ich über eine PM gefragt worden, wie das obige Skript anzuwenden sei:

Zitat Leider verstehe ich nicht wie es anzuwenden ist. Können Sie mir einen Tip geben?


Diese Frage könnte von allgemeinem Interesse sein, deswegen antworte ich öffentlich.

Zum Sichern eines Skripts siehe die Hinweise unter http://www.hilfdirselbst.org/...amp;t=Skript+sichern

1. Zum Aufbau der Tabelle habe ich einen Screenshot (simpleTable.jpg) angehängt.

2. Vor dem Starten des Skripts muß sich der Cursor in einer Zelle der Tabelle befinden (welche, das ist egal).

3. Das Skript ist so geschrieben, daß es die Zahlen in der letzten Spalte (hier Spalte 6, bei einer 3-spaltigen Tabelle wäre es Spalte 3) addiert und die Summe in die Zelle rechts unten (hier Spalte 6, Reihe 5) schreibt. Das Format der Tabelle, der Zellen und der Zahlen ist egal.
Genaugenommen addiert es nicht alle Zahlen in der letzten Spalte, sondern nur die von Reihe 1 bis 4 (also bis zur vorletzten Reihe, denn in der letzten Reihe soll ja die Summe stehen).

4. Bei nochmaligem Start des Skripts wird der Inhalt der Zelle rechts unten überschrieben.

Ist es so verständlich?
Funktioniert es so?


als Antwort auf: [#254603]
Anhang:
simpleTable.jpg (53.6 KB)

Indesign, Tabellen und Zahlen

Mr. Zwiebelfisch
Beiträge gesamt: 453

5. Okt 2006, 13:10
Beitrag # 5 von 46
Beitrag ID: #254796
Bewertung:
(71216 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey ho!

Das klappt super. Vielen lieben Dank :-)


als Antwort auf: [#254791]

Indesign, Tabellen und Zahlen

olvradam
Beiträge gesamt: 249

5. Okt 2006, 23:30
Beitrag # 6 von 46
Beitrag ID: #254923
Bewertung:
(71180 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow, das klingt ja spannend! Kann man das Script kaufmännisch so erweitern, dass es

1) die Summe adiert, sprich in der Rechnung den Nettobetrag, und den Betrag in der vorvorletzten Zelle der letzen Spalte einträgt,

2) in der Zelle darunter die Umsatzsteuer ausrechnet,

3) um dann in der letzten Zelle die Gesamtsumme (brutto) auszugeben?

Mehr bräuchte es doch für eine einfache Rechnung eigentlich gar nicht und ich wäre Word los ;-)

Liebe Grüße, Oliver


als Antwort auf: [#254796]

Indesign, Tabellen und Zahlen

Martin Fischer
  
Beiträge gesamt: 12783

5. Okt 2006, 23:38
Beitrag # 7 von 46
Beitrag ID: #254925
Bewertung:
(71177 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Mehr bräuchte es doch für eine einfache Rechnung eigentlich gar nicht
> und ich wäre Word los ;-)

Na, da will ich mal ein bißchen nachhelfen:
Code
// simpleBilling.jsx   

var MWST = 16/100;
if (app.selection[0].parent.constructor.name == "Cell"){
var myTable = app.selection[0].parent.parent;
var myLastCol = myTable.columns.length-1;
var myLastRow = myTable.rows.length-1;
var mySum = 0;
for (k = 0; k < myLastRow-2; k++) {
mySum += (myTable.columns[myLastCol].cells[k].contents.replace(",", "."))*1
}
myTable.columns[myLastCol].cells[myLastRow-2].contents = digitFormatter(mySum);
myTable.columns[myLastCol].cells[myLastRow-1].contents = digitFormatter(mySum*MWST);
myTable.columns[myLastCol].cells[myLastRow].contents = digitFormatter(mySum*MWST + mySum);
}

function digitFormatter(x) {
// Quelle: http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden#6
var k = (Math.round(x * 100) / 100).toString();
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.');
return k.substring(0, p) + ',' + k.substring(p+1, p+3);
}



als Antwort auf: [#254923]
(Dieser Beitrag wurde von Martin Fischer am 26. Mai 2007, 22:01 geändert)

Indesign, Tabellen und Zahlen

olvradam
Beiträge gesamt: 249

5. Okt 2006, 23:42
Beitrag # 8 von 46
Beitrag ID: #254927
Bewertung:
(71173 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Cool! Das probiere ich morgen mal aus. Achso: Funktioniert das Skript auch in Indesign CS?

Liebe Grüße, Oliver


als Antwort auf: [#254925]
(Dieser Beitrag wurde von olvradam am 5. Okt 2006, 23:43 geändert)

Indesign, Tabellen und Zahlen

Martin Fischer
  
Beiträge gesamt: 12783

5. Okt 2006, 23:47
Beitrag # 9 von 46
Beitrag ID: #254928
Bewertung:
(71169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Funktioniert das Skript auch in Indesign CS?

Ja.
Und ganz am Anfang kann man die aktuelle Mehrwertsteuer einstellen:
Code
var MWST = 16/100; 



als Antwort auf: [#254927]
(Dieser Beitrag wurde von Martin Fischer am 5. Okt 2006, 23:50 geändert)

Indesign, Tabellen und Zahlen

olvradam
Beiträge gesamt: 249

7. Okt 2006, 12:31
Beitrag # 10 von 46
Beitrag ID: #255154
Bewertung:
(71067 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Klappt ausgezeichnet! Vielen Dank, Martin :-)


als Antwort auf: [#254928]

Indesign, Tabellen und Zahlen

soapboxdesign
Beiträge gesamt: 2

9. Feb 2010, 09:22
Beitrag # 11 von 46
Beitrag ID: #433089
Bewertung:
(65488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
guten Tag zusammen,

ich bin beim Suchen nach einer Lösung zum Rechnen mit InDesign über diese Lösung gefallen. Funktioniert toll, ich habe das Ganze ein wenig erweitert und an meine Bedürfnisse angepasst.

Das Script multipliziert jetzt zusätzlich die Tabellenfelder Stunden und Netto und rechnet die Endsummen aller Positionen untereinander auf, wie von Martin Fischer so elegant gelöst.

Mein Problem ist gerade, dass bei der Eingabe nur Kommazahlen mit Punkt akzeptiert werden, bei einem Komma als Dezimaltrennzeichen wird NaN ausgegeben.
Kann mir hier bitte jemand auf die Sprünge helfen? Ich komme mit meinen Kenntnissen hier nicht so recht weiter ...

Hier mein Code:
Code
 
// simpleBilling.jsx

var MWST = 16/100;
if (app.selection[0].parent.constructor.name == "Cell"){
var myTable = app.selection[0].parent.parent;
var myLastCol = myTable.columns.length-1;
var myLastRow = myTable.rows.length-1;
var myStunden = myTable.columns.item(3).contents;
var myNetto = myTable.columns.item(4).contents;
var mySum = 0;
var myPrice = 0;
for (k = 0; k < myLastRow-2; k++) {

myPrice = (((myTable.columns.item(3).cells[k].contents))*((myTable.columns.item(4).cells[k].contents)));

myTable.columns.item(3).cells[k].contents = digitFormatter(myTable.columns.item(3).cells[k].contents);
myTable.columns.item(4).cells[k].contents = digitFormatter(myTable.columns.item(4).cells[k].contents);

myTable.columns[myLastCol].cells[k].contents = digitFormatter(myPrice) + " EUR";
mySum += (myTable.columns[myLastCol].cells[k].contents.replace(",", "."))*1 ;

}

myTable.columns[myLastCol].cells[myLastRow-2].contents = digitFormatter(mySum) + " EUR";
myTable.columns[myLastCol].cells[myLastRow-1].contents = digitFormatter(mySum*MWST) + " EUR";
myTable.columns[myLastCol].cells[myLastRow].contents = digitFormatter(mySum*MWST + mySum) + " EUR";
}


function digitFormatter(x) {
// Quelle: http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden#6
var k = (Math.round(x * 100) / 100).toString();
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.');
return k.substring(0, p) + ',' + k.substring(p+1, p+3);
}


Dennis Wehrmann


als Antwort auf: [#254928]

Indesign, Tabellen und Zahlen

Martin Fischer
  
Beiträge gesamt: 12783

9. Feb 2010, 09:49
Beitrag # 12 von 46
Beitrag ID: #433095
Bewertung:
(65476 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dennis,

für Berechnungen braucht's den Punkt als Dezimaltrennzeichen.
Ersetze deswegen im string, der für eine Zahlenoperation verwendet werden soll, das Komma durch einen Punkt:
Code
var myString = '123,45'; 
var myNum = Number( myString.replace(",", ".") );


Brauchst Du am Ende im string (etwa Text in der Tabelle) wieder ein Komma, dann ersetze den Punkt im string (also nach der Umwandlung der Zahl in einen string) wieder zurück:

Code
var myNum = 123.45; 
var myString = String( myNum).replace(".", ",");



als Antwort auf: [#433089]

Indesign, Tabellen und Zahlen

soapboxdesign
Beiträge gesamt: 2

9. Feb 2010, 20:49
Beitrag # 13 von 46
Beitrag ID: #433187
Bewertung:
(65399 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke vielmals für die Hilfestellung, ich werde mal versuchen, Deinen Ansatz einzubauen.

Viele Grüße
Dennis Wehrmann


als Antwort auf: [#433095]

Indesign, Tabellen und Zahlen

technikfreak
Beiträge gesamt: 4

8. Mai 2011, 11:41
Beitrag # 14 von 46
Beitrag ID: #470886
Bewertung:
(61753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

jetzt muss ich das Thema leider noch einmal aufwärmen. Versuche gerade aktuell in InDesign ein Rechnungstemplate zu bauen. Ich möchte aber nicht automatisch die letzten drei Zeilen auswählen für Netto, Mwst. und Gesamtsumme sonder über ein einmalig zugewiesenes Zeichenformat. Dieses Zeichenformat befindet sich dann auch in einer anderen Tabelle.

Was genau muss ich ändern, um nicht nach Tabellenzeilen zu gehen sonder nach Zeichenformaten einzufügen?

Vielen Dank und liebe Grüße

Julian


als Antwort auf: [#433187]

Indesign, Tabellen und Zahlen

Martin Fischer
  
Beiträge gesamt: 12783

9. Mai 2011, 07:35
Beitrag # 15 von 46
Beitrag ID: #470914
Bewertung:
(61656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Julian,

herzlich willkommen im Forum.

Antwort auf: Was genau muss ich ändern, um nicht nach Tabellenzeilen zu gehen sonder nach Zeichenformaten einzufügen?

Erst mal anders herum gefragt: hast Du etwas Erfahrung im Skripten oder brauchst Du einfach eine maßgeschneiderte Lösung?


Wenn ersteres: Kannst Du das Ziel für das Ergebnis (skripttechnisch) beschreiben?
Etwa: eine (die erste oder alle) Fundstelle der Suche nach Text mit einem best. Zeichenformat?

Dazu müsstest Du zunächst die Suchparameter einstellen,
dann die Suche ausführen (dokumentweit oder in einem best. Bereich)
und dann die contents von den Treffern (ggf. Schleife) mit dem Summenergebnis der Tabelle füllen.


als Antwort auf: [#470886]
(Dieser Beitrag wurde von Martin Fischer am 9. Mai 2011, 08:20 geändert)
X