Es gibt auch die Möglichkeit Zahlen nicht nur vorab zu berechnen, sondern beim E xport nach Excel als Excel-Formel zu übergeben.
Um diese Funktion zu aktivieren muss im JRXML die Property mit folgender Zeile eingefügt werden:
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
Oder über die Report Properties:
Danach können in jedem Text Field in der Property expression:
folgende Einträge ergänzt werden:
Rechts neben net.sf.jasperreports.export.xls.formula wird die Formel für Excel eingetragen, allerdings ohne = am Anfang. Außerdem werden nicht alle Excel-Formeln unterstützt, insbesondere nicht deren deutsche Lokalisierung (z.B. oben SUMME(D119... ). Details finden Sie in der POI -Dokumentation. Um zu erfahren wie die Felder lauten, welche berechnet werden sollen, am besten den Bericht einmal ausführen und in Excel anzeigen lassen. Achtung: Wenn der Bericht noch bearbeitet wird, können sich die Felder noch verändern.
Bei net.sf.jasperreports.export.xls.pattern können speziell für Excel Formatangaben gemacht werden. In dem obigen Beispiel " #,##0.00;-#,##0.00 " gibt es 2 Nachkommastellen und ein Tausender-Trennzeichen. Wenn z.B. Tausende von Euro angezeigt werden sollen, nimmt man als Pattern #.
Fallstrick: in der von uns getesteten Version (4.1.3) wurde die Property net.sf.jasperreports.export.xls.formula nur dann ausgewertet, wenn das das jew. Textfeld eine korrekte "Text field expression" hat, sie darf also nicht leer sein. Ob das ein Bug ist oder nicht ist uns derzeit unklar.
Beispiel für eine komplexe Summenformel SUM(D7:D20,D28,D33,D40)
Man kann die Formel auch als Expression formulieren, z.b. um eine Division durch 0 zu verhindern. Setzen Sie dazu das Häkchen bei "Use an expression":
Das obige Beispiel führt die Formel " D91/D149 " nur aus, wenn die Variable $V{Haush_Professoren_1} (die Quelle für die Zelle D149) einen Wert größer 0 hat. Wenn nicht, wird keine Formel reingeschrieben, sondern der Wert 0.
Diese Funktion bietet natürlich noch viel mehr Möglichkeiten, z.B. könnte man damit Excel-Zellennummern dynamisch berechnen etc. Beispiele dazu finden Sie in den JasperReport Demos in demo/samples/xlsformula/reports/XlsFormulaReport.jrxml .
Druckversion HTML
![]() |
![]() |
Seite 110 / 158 Letzter Update: 7.9.2023 Impressum| Datenschutz |