В моем jrxml источнике данных есть json, у нас есть одно поле
{
"sheetName":"test"
}
вместе с другими полями JSON. Когда вывод отчета jasper находится в формате xlsx, мы хотим, чтобы имя листа было значением этого входного json.
Согласно нашему пониманию, имя листа для вывода xlsx из jrxml может быть установлено с помощью свойства "* net.sf.jasperreports.export.xls.sheet.name"
следовательно, чтобы обеспечить это значение свойства, я объявил эти поля в основном наборе данных как
<field name="sheetName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="sheetName"/>
</field>
и затем я объявляю выражение свойства, чтобы задать имя листа динамического набора для элемента jasperreport, как это
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{sheetName}]]></propertyExpression>
Я по-прежнему получаю значение, указанное в <jasperReport>
имя листа element.ie в сгенерированном файле xlsx - это имя отчета, указанное для отчета вместо значения net.sf.jasperreports.export.xls.sheet.name ,
Есть ли способ установить net.sf.jasperreports.export.xls.sheet.name из ввода json в jrxml?
в приведенном ниже коде при установке свойства как части jasperreport не отображается имя листа из json
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 -->
<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="SheetNameTest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1f31f952-cc6a-4faf-b8fd-2ede4119ea9f">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="modtest\dynamicSheet.xml"/>
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{sheetName}]]></propertyExpression>
<queryString language="jsonql">
<![CDATA[]]>
</queryString>
<field name="sheetName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="sheetName"/>
<fieldDescription><![CDATA[sheetName]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="259" y="38" width="100" height="30" uuid="653aa746-6763-4fbb-8576-cebe40169a8b"/>
<textFieldExpression><![CDATA["JsonSheet"]]></textFieldExpression>
</textField>
</band>
</title>
<detail>
<band height="231" splitType="Stretch"/>
</detail>
</jasperReport>
в приведенном ниже коде путем установки имени листа в текстовом поле отображается имя листа из json
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 -->
<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="SheetNameTest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1f31f952-cc6a-4faf-b8fd-2ede4119ea9f">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="modtest\dynamicSheet.xml"/>
<queryString language="jsonql">
<![CDATA[]]>
</queryString>
<field name="sheetName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="sheetName"/>
<fieldDescription><![CDATA[sheetName]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="259" y="38" width="100" height="30" uuid="653aa746-6763-4fbb-8576-cebe40169a8b">
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{sheetName}]]></propertyExpression>
</reportElement>
<textFieldExpression><![CDATA["JsonSheet"]]></textFieldExpression>
</textField>
</band>
</title>
<detail>
<band height="231" splitType="Stretch"/>
</detail>
</jasperReport>
Решение работает, если имя листа указано в текстовом поле.
спасибо
Anjana.