我有类似下面的数据,这些数据是通过 JasperReports 的查询获取的。
column1包含数据:
12,
21,
23,
321,
23
现在我想在第2列中显示每行值的百分比,例如第1行
(100 * 12) / sum of (column1)
应该对所有行进行。
我如何在 JasperReports 中执行此操作?
答案 0 :(得分:1)
添加变量(例如v_sum)以获取列的总和(例如,EMPLOYEEID)。
<variable name="v_sum" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{EMPLOYEEID}]]></variableExpression>
</variable>
然后选择要获取%值的第2列的字段并选择属性: -
Evaluation Time- Auto
示例报告,您可以使用示例数据库(HSQLDB)运行: -
<?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="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="76072389-4335-4fd9-b45a-111b679776c9">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
<![CDATA[select EMPLOYEEID from orders]]>
</queryString>
<field name="EMPLOYEEID" class="java.lang.Integer"/>
<variable name="v_sum" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[$F{EMPLOYEEID}]]></variableExpression>
</variable>
<columnHeader>
<band height="28" splitType="Stretch">
<staticText>
<reportElement uuid="00bd99b4-690f-4eea-aebe-08b0cdcfcec2" x="15" y="6" width="100" height="20"/>
<textElement/>
<text><![CDATA[EmployeeID]]></text>
</staticText>
<staticText>
<reportElement uuid="6396c710-73d9-407f-ba02-4aceb524cb75" x="172" y="6" width="100" height="20"/>
<textElement/>
<text><![CDATA[%]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement uuid="dbbdb209-dbd4-4dbb-a454-32968c31ec79" x="14" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{EMPLOYEEID}]]></textFieldExpression>
</textField>
<textField evaluationTime="Auto">
<reportElement uuid="f14e9e42-5486-4204-974c-c2c148ab73c7" x="172" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[(100*$F{EMPLOYEEID}) / $V{v_sum}]]></textFieldExpression>
</textField>
</band>
</detail>