Gelöst : Seitenanzahl ermitteln in Calc

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Gelöst : Seitenanzahl ermitteln in Calc

Beitrag von keksi1970 »

Hi

also ich habe eine bestimmte anzahl Zeilen und möchte nun die Seitenanzahl beim Drucken ermitteln

Genauer :
die Zeilenanzahl bestimmt das Makro, die Überschrift wiederholt sich, der Druckbereich wird per Makro angepasst.
Wie kann ich nun die Seitenanzahl ermitteln ?

LG
Andreas

btw : ich habe xray versuch, aber entweder stehts nicht drin, oder ich suche wieder falsch ;)
Zuletzt geändert von keksi1970 am Sa, 14.11.2009 15:01, insgesamt 1-mal geändert.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Seitenanzahl ermitteln in Calc

Beitrag von Stephan »

Wie kann ich nun die Seitenanzahl ermitteln ?
Na durch Ausrechnen. Wenn die Zeilenanzahl bekannt ist und die Blattgröße bekannt ist ist das doch nur Mathematik unter Berücksichtigung beider und der Kopfzeile und der SEitenränder etc., die Seitenanzahl auszurechen.
Zumindest würde ich auf diesem WEge vorgehen.



Gruß
Stephan
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Seitenanzahl ermitteln in Calc

Beitrag von keksi1970 »

sorry, ich steh grad auf dem Schlauch.

Also müsste ich die Grösse

des oberen Randes
+ unterer Rand
+Kopf/Fusszeile
+Wiederholende Überschrift
+ Höhe der Zellen

berechnen,
das Ergebnis durch die Höhe des Blattes teilen
um die Seitenanzahl zu bekommen ?
Das erscheint mir doch zu umständlich, von der Dauer des Vorgangs abgesehen.

Warum gibts da kein druckbereich.usedArea.pages.count ?
Und warum kann Calc Automatisch in der Fusszeile die Seitenzahl zeigen ?
Kann man die nicht auslesen ?

Trotzdem Danke erstmal, aber diesen komplizierten weg werde ich wohl nicht beschreiten
(cm in pixel umrechnen usw.)

LG
Andreas
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Seitenanzahl ermitteln in Calc

Beitrag von Stephan »

Also müsste ich die Grösse

des oberen Randes
+ unterer Rand
+Kopf/Fusszeile
+Wiederholende Überschrift
+ Höhe der Zellen

berechnen,
das Ergebnis durch die Höhe des Blattes teilen
um die Seitenanzahl zu bekommen ?
im Prinzip ja, wobei ich glaube DEine Aufzählung ist nicht vollständig, z.B. haben Kopfzeilen wohl auch zu berücksichjtigende Abstände zu SEitenrändern
Das erscheint mir doch zu umständlich
ja und? Viele Dinge sind umständlich und trotzdem muß man sie tun.
Ich habe das englische Forum abgesucht, dort steht keine LÖsung und ich habe deshalb die vorgeschlagen die mir möglich erschien.
von der Dauer des Vorgangs abgesehen
ich denke nicht das das Ganze mehr als 1-2 Sekunden beansprucht, wenn überhaupt
Warum gibts da kein druckbereich.usedArea.pages.count ?
Frage die Entwickler. z.B. Über einen issue ist das möglich:
viewtopic.php?f=3&t=12975
Und warum kann Calc Automatisch in der Fusszeile die Seitenzahl zeigen ?
Weil es dafür einen entsprechenden Feldbefehl gibt.
Kann man die nicht auslesen ?
zumindest mir ist nicht bekannt wie das in Calc möglich wäre



Gruß
Stephan
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Seitenanzahl ermitteln in Calc

Beitrag von keksi1970 »

danke für die ausführliche Antwort.

Ich werd es andersrum machen :

Ich gebe dem Druckbereich die Seitenzahl vor :D
nach 40 Zeilen (Querformat) Seitenumbruch einfügen und diese Anzahl zählen
Diese + 1 ergibt automatisch die Anzahl der Seiten (oder Irre ich mich ?)


Das probier ich 4-5 mal, habe die richtige Anzahl der Zeilen und sperre die verstellbarkeit der Zeilenhöhe(Schriftgrösse, usw)
LG
Andreas
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Seitenanzahl ermitteln in Calc

Beitrag von keksi1970 »

und es geht doch :)

vorraussetzung ist :

1. einen Druckbereich definieren (da das Makro die zeilen füllt, ziemlich einfach)
2. Umschalten in die Seitenumbruch Vorschau

sobald man dies getan hat, kann man mit

oDoc = THisComponent
oSheet = oDoc.sheets(0)
aPageBreaks() = oSheet .getRowPageBreaks()
Anzahl = ubound(aPagebreaks())-1

die Anzahl der Seitenumbrüche auslesen (-1) ergibt die Seitenanzahl

mit aPagebreaks(i).position auch die einzelnen Positionen selber

nun ist es einfach, bsp 3 Zeilen für einen Übertrag einzufügen.

Das macht diese Datei


LG
Andreas
Dateianhänge
test.ods
(16.88 KiB) 154-mal heruntergeladen
Antworten