【问题标题】:How to create a report with fields in between paragraph text?如何在段落文本之间创建包含字段的报告?
【发布时间】:2016-03-09 14:26:04
【问题描述】:
我的报告如下所示。
在显示的报告中,黑色文本是静态的,红色文本是由 java 动态替换为某个值的字段。
在上图中,第1行和第2行我没有问题。
但是对于该段落,我不确定该使用什么?我应该使用静态文本框还是文本字段?如果我使用部分静态文本框和部分动态文本框,它会变得笨拙且难以保持行距。
所以请告知如何在 jasper studio 5.6 中设计以下报告。
【问题讨论】:
标签:
formatting
jasper-reports
【解决方案1】:
使用textField,然后在文本上连接字符串,当您需要数字格式时,使用NumberFormat API 或DecimalFormat API
如果您需要换行,请设置粗体文本,您可以使用 html 通过在 textElement 上设置 markup="html" 来实现此目的
示例
<?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="test" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="0ef33a9d-fd2b-46cc-9ec4-c6906db8097b">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="testNumber" class="java.lang.Double" isForPrompting="false">
<defaultValueExpression><![CDATA[new Double(10000.23445)]]></defaultValueExpression>
</parameter>
<title>
<band height="57" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="373" height="57" uuid="2f795f8a-43fa-4b89-a173-76854a13ba48"/>
<textElement markup="html"/>
<textFieldExpression><![CDATA["Just use a textField and string concat the other text a " + java.text.NumberFormat.getNumberInstance().format($P{testNumber}) + " as you see you can even format it and remeber if you set as html you can <br/> break line and <b>bold</b> text"]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
输出