我有一个spring webapp,在那里我使用JasperReports生成一些基本的数据库查询报告,并导出到pdf。
我尝试使用dynamic-jasper以编程方式添加标签,而不是使用jrxml,但遇到了不同的问题。我的jrxml文件几乎是Jaspersoft Studio的tabular-report.jrxml示例的副本。让我知道如果你需要看一些其他的东西来解决这个问题,在这一点上任何帮助都是非常感谢的。
找到了这个,但没有解决方案:https://community.jaspersoft.com/questions/1112221/error-manulal-tagging-table-pdf-export
下面是我的jrxml文件:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ....>
<style>....
</style>
<queryString>
This works, deleted because its sensitive.
</queryString>
<field name="last_login" class="java.sql.Timestamp"/>
<field name="first_name" class="java.lang.String"/>
<field name="middle_name" class="java.lang.String"/>
<field name="last_name" class="java.lang.String"/>
<field name="IAL" class="java.lang.Integer"/>
<field name="xid" class="java.lang.String"/>
<field name="email" class="java.lang.String"/>
<title>
<band height="45">
<staticText>
<reportElement style="reportTitleStyle" positionType="Float" x="0" y="0" width="595" height="30">
<property name="net.sf.jasperreports.export.pdf.tag.h1" value="full"/>
</reportElement>
<textElement/>
<text><![CDATA[User Login Report]]></text>
</staticText>
<textField>
<reportElement style="subTitleStyle" positionType="Float" x="0" y="30" width="595" height="15">
<property name="net.sf.jasperreports.export.pdf.tag.h2" value="full"/>
</reportElement>
<textElement/>
<textFieldExpression>
<![CDATA["This report was generated at " + new java.util.Date()]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="30">
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="0" y="0" width="95" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.table" value="start"/>
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["Last Login"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="95" y="0" width="83" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["First Name"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="178" y="0" width="59" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["Middle Name"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="237" y="0" width="83" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["Last Name"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="320" y="0" width="35" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["IAL"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="355" y="0" width="59" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["XID"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="defaultHeaderStyle" positionType="Float" stretchType="RelativeToTallestObject" x="414" y="0" width="141" height="30" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="2"/>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["Email"]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<detail>
<band height="15" splitType="Immediate">
<frame>
<reportElement x="0" y="0" width="555" height="15">
<property name="net.sf.jasperreports.export.pdf.tag.tr" value="full"/>
</reportElement>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="timeStampColumnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="0" y="0" width="95" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
</reportElement>
<textFieldExpression><![CDATA[$F{last_login}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="95" y="0" width="83" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
</reportElement>
<textFieldExpression><![CDATA[$F{first_name}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="178" y="0" width="59" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
</reportElement>
<textFieldExpression><![CDATA[$F{middle_name}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="237" y="0" width="83" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
</reportElement>
<textFieldExpression><![CDATA[$F{last_name}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="320" y="0" width="35" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
</reportElement>
<textFieldExpression><![CDATA[$F{IAL}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="355" y="0" width="59" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
</reportElement>
<textFieldExpression><![CDATA[$F{xid}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="columnStyle" positionType="Float" stretchType="RelativeToTallestObject" x="414" y="0" width="141" height="15" isPrintWhenDetailOverflows="true">
<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
<property name="net.sf.jasperreports.export.pdf.tag.table" value="end"/>
</reportElement>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
</textField>
</frame>
</band>
</detail>
</jasperReport>错误:
java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at net.sf.jasperreports.engine.export.JRPdfExporterTagHelper.createTrStartTag(JRPdfExporterTagHelper.java:664)
at net.sf.jasperreports.engine.export.JRPdfExporterTagHelper.createStartTags(JRPdfExporterTagHelper.java:589)
at net.sf.jasperreports.engine.export.JRPdfExporterTagHelper.startElement(JRPdfExporterTagHelper.java:499)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:1241)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:1210)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:1074)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:691)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)发布于 2020-08-09 20:59:56
该错误是由net.sf.jasperreports.export.pdf.tag.table=end属性引起的,该属性是在报表的详细信息区域中的元素上设置的。细节带对查询结果中的每条记录重复,因此在细节带中设置net.sf.jasperreports.export.pdf.tag.table=end是没有意义的。
应在仅在表格/页面末尾打印一次的元素上设置该属性,例如,在页脚区域中:
<pageFooter>
<band height="1">
<textField>
<reportElement x="0" y="0" width="100" height="1">
<property name="net.sf.jasperreports.export.pdf.tag.table" value="end"/>
</reportElement>
<textFieldExpression>""</textFieldExpression>
</textField>
</band>
</pageFooter>https://stackoverflow.com/questions/63303229
复制相似问题