Jasper_sheetName_defined by parameter or hard coding or filed name

时间:2022-07-07 14:27:48

1、根据传递的参数定义sheet name (jasper sheet name defined by parameter)

(1) 获取后台参数

<parameter name="PARAMS_PROVIDER" class="com......jasper.writer.JRParamsProvider" isForPrompting="false"/>
<parameter name="P_FIN_PRES" class="java.lang.String">
<defaultValueExpression><![CDATA[$P{PARAMS_PROVIDER}.getQueryParams().get("P_SheetName")]]></defaultValueExpression>
</parameter>

(2) 根据参数定义sheetname, 定义在main report 的 pageHeader 中。

<line>
<reportElement x="0" y="0" width="1" height="1" uuid="141e6753-0b2c-4b74-be35-5826e4df4eb2">
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$P{P_SheetName}]]></propertyExpression>
</reportElement>
</line>

2、在jasper main report 中硬编码,不同sheet页的sheet name 需要用 "/" 隔开。 (jasper sheet name defined by hard coding)

<property name="net.sf.jasperreports.export.xls.sheet.names.all" value="Sheet1Name/Sheet2Name/Sheet3Name"/>

3、 在jasper sub report 中使用子报表的数据源字段作为sheetName. (jasper sheet name defined by field name)

<group name="Group1">
<groupExpression><![CDATA[$F{Restriction Id}]]></groupExpression>
<groupHeader>
<band height="20">
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
<textField>
<reportElement mode="Opaque" x="0" y="0" width="555" height="20" backcolor="#A6A2A2" uuid="23780fba-1d03-40d6-8c45-fe4ff67e83ad">
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{Restriction Id}]]></propertyExpression>
</reportElement>

4、每个 sheet 页的 sheet name 长度不能超过31 个字符。超过的部分将会被截断。