JasperReports 饼图
最后修改日期:2024 年 2 月 12 日
JasperReports 饼图教程展示了如何在 JasperReports 库中创建饼图。
JasperReports 是一个开源的报表库。它可以创建多种格式的报表,包括 PDF、HTML、XLS 或 CSV。
饼图是一种将数据以圆形显示的图表,该圆形被分成多个扇形。每个扇形代表其数值占总大小的比例。
JasperReports 饼图示例
在下面的示例中,我们将一个饼图放入报表中;该图表显示了各种水果及其数量。
report.xml
<?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="report" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> <field name="name"/> <field name="quantity" class="java.lang.Integer"/> <summary> <band height="450" splitType="Stretch"> <pieChart> <chart evaluationTime="Report"> <reportElement x="0" y="0" width="350" height="300"/> <chartTitle position="Top"> <titleExpression><![CDATA["Fruits"]]></titleExpression> </chartTitle> <chartSubtitle/> <chartLegend/> </chart> <pieDataset> <dataset resetType="Report"/> <keyExpression><![CDATA[$F{name}]]></keyExpression> <valueExpression><![CDATA[$F{quantity}]]></valueExpression> </pieDataset> <piePlot labelFormat="{2}"> <plot/> <itemLabel/> </piePlot> </pieChart> </band> </summary> </jasperReport>
饼图使用 pieChart
标签。
<field name="name"/> <field name="quantity" class="java.lang.Integer"/>
我们有两个映射到数据源的字段:name
和 quantity
。
<chartTitle position="Top"> <titleExpression><![CDATA["Fruits"]]></titleExpression> </chartTitle>
图表标题通过 chartTitle
设置。
<piePlot labelFormat="{2}"> <plot/> <itemLabel/> </piePlot>
使用 labelFormat
属性,我们在扇形中显示百分比。
report.gvy
package com.zetcode @Grab(group='net.sf.jasperreports', module='jasperreports', version='6.21.0') @Grab(group='com.github.librepdf', module='openpdf', version='1.3.39') import net.sf.jasperreports.engine.JasperCompileManager import net.sf.jasperreports.engine.JasperExportManager import net.sf.jasperreports.engine.JasperFillManager import net.sf.jasperreports.engine.data.JRMapCollectionDataSource def xmlFile = "report.xml" def jrReport = JasperCompileManager.compileReport(xmlFile) def fruits = [ [ "name": "Oranges", "quantity": 38], [ "name": "Pears", "quantity": 45], [ "name": "Plums", "quantity": 24], [ "name": "Cherries", "quantity": 10], ] def ds = new JRMapCollectionDataSource(fruits) def params = [:] def jrPrint = JasperFillManager.fillReport(jrReport, params, ds) JasperExportManager.exportReportToPdfFile(jrPrint, "report.pdf")
这是生成报表的 Groovy 代码。
def fruits = [ [ "name": "Oranges", "quantity": 38], [ "name": "Pears", "quantity": 45], [ "name": "Plums", "quantity": 24], [ "name": "Cherries", "quantity": 10], ]
这是在饼图中显示的数据;它是一个 Map 列表。
def ds = new JRMapCollectionDataSource(fruits)
我们使用 JRMapCollectionDataSource
作为数据源。
def jPrint = JasperFillManager.fillReport(jrReport, params, ds)
数据源被传递到 JasperFillManager.fillReport
。
在本文中,我们使用 JasperReports 库创建了一个饼图。