导出到 excel 时如何在模式中指定自定义单位格式?

How to specify custom units format in pattern when exporting to excel?

我想使用 jasper 报告生成一个 excel 报告,该报告可以选择在列中包含 units/currencies。

喜欢第 1 栏:5,74 €/h 和第 2 栏:24,7 kg.

在 excel 中,我可以将此模式输入为 #.##0,00" €/h"

但是在 jrxml 中使用相同的模式

<textField isBlankWhenNull="true">
    <reportElement height="125" style="detail">
            <property name="net.sf.jasperreports.export.xls.pattern" value="#,##0&quot; €/h&quot;"/>
     </reportElement>
     <textFieldExpression><![CDATA[$F{attributeWithUnit}]]></textFieldExpression>
 </textField>

不起作用,excel 无法理解,因此使整个列变形或 sheet 并给出错误。

如何 can/should 我如何格式化此 jasper 导出 excel 以了解如何格式化它?

您遇到的问题是,对于导出引擎,您实际上需要传递 #,##0&quot; €/h&quot; 而不是 #,##0" €/h",并且由于属性被解析,它被转换为 #,##0" €/h"

在你开始之前一定要启用xls.detect.cell.type

<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>

并确保您的字体能够正确显示欧元符号。

使用 jasper-reports 版本 6.4 以上

使用 CDATA 标签

<textField>
  <reportElement x="0" y="0" width="180" height="30" uuid="a5698aa9-a36e-444d-b590-3340250059a1">
    <property name="net.sf.jasperreports.export.xls.pattern">
        <![CDATA[#,##0.0&quot; €/h&quot;]]>
    </property>
  </reportElement>
  <textFieldExpression><![CDATA[1235]]></textFieldExpression>
</textField>

6.4 之前的版本

您需要对 & 进行转义,以便在传递给导出时它是正确的 & 因此格式字符串变为 #,##0.0&amp;quot; €/h&amp;quot;

<textField>
    <reportElement x="0" y="0" width="180" height="30" uuid="a5698aa9-a36e-444d-b590-3340250059a1">
        <property name="net.sf.jasperreports.export.xls.pattern" value="#,##0.0&amp;quot; €/h&amp;quot;"/>
    </reportElement>
    <textFieldExpression><![CDATA[1236]]></textFieldExpression>
</textField>