我必須創建一個條形圖,其中可以包含大量(大約50個)類別(X軸)。我希望將此報告分成多個頁面,以便我可以應用分頁。我已經找到了答案在這裏:條形圖中的分頁與系列
How can I generate paginated bar chart in jasper report
但上面的答案討論了單系列柱狀圖。 以下是我打算創建一個示例報告:
假設我們在X軸約50日,該報告將變大。所以我必須打破這個報告,這樣我才能顯示每頁可配置的數量(比如3)。以下是我的做法:
- 創建一個組,日期字段
- 的創建,其對這個羣體的變量。
<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="paginationBar3d" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a9331cff-3045-47b5-8399-17a89e2ac39c"> <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="0"/> <queryString> <![CDATA[select a.year_built, aty.description, count(*) as count from aircraft a, aircraft_types aty where a.aircraft_type_id = aty.aircraft_type_id group by year_built, description order by a.year_built;]]> </queryString> <field name="year_built" class="java.sql.Date"> <fieldDescription><![CDATA[]]></fieldDescription> </field> <field name="description" class="java.lang.String"> <fieldDescription><![CDATA[]]></fieldDescription> </field> <field name="count" class="java.lang.Long"/> <variable name="variable1" class="java.lang.Integer" incrementType="Group" incrementGroup="yearGroup" calculation="Count"> <variableExpression><![CDATA[Boolean.TRUE]]></variableExpression> </variable> <group name="yearGroup"> <groupExpression><![CDATA[$F{year_built}]]></groupExpression> </group> <group name="splitter"> <groupExpression><![CDATA[$V{variable1} - 1 - (($V{variable1} - 1) % 3)]]></groupExpression> <groupFooter> <band height="802"> <bar3DChart> <chart> <reportElement uuid="7114e305-2cfb-4757-b034-b0a12dd412d9" x="0" y="0" width="555" height="802"/> <chartTitle/> <chartSubtitle/> <chartLegend/> </chart> <categoryDataset> <dataset resetType="Group" resetGroup="splitter"/> <categorySeries> <seriesExpression><![CDATA[$F{description}]]></seriesExpression> <categoryExpression><![CDATA[$F{year_built}]]></categoryExpression> <valueExpression><![CDATA[$F{count}]]></valueExpression> </categorySeries> </categoryDataset> <bar3DPlot> <plot/> <itemLabel/> <categoryAxisFormat> <axisFormat/> </categoryAxisFormat> <valueAxisFormat> <axisFormat/> </valueAxisFormat> </bar3DPlot> </bar3DChart> </band> </groupFooter> </group> </jasperReport>
這產生:1 - - - (($ V {變量1} 1)%3)
以下是JRXML文件
是的,但這會限制每頁圖表中的18個條,但是我有一個可變數量的系列。如果我有4個類別,其中5個系列共計20個酒吧,則最後一個類別將被截斷。在上面的公式中,我可以將18改爲10,但是我的系列是可變的。 – Vaibhav
您可以添加系列和類別變量$ V {REPORT_COUNT} - 1 - (($ V {REPORT_COUNT} - 1)%($ V {Number_of_Series} * $ V {Number_of_Categories})) – Sharad