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 个字符。超过的部分将会被截断。