9

我正在创建一个 jasper 报告。我想编写一个方法,它采用整数并执行一些处理并返回一个字符串。我不知道如何在 jasper 报告中编写方法。是否可以编写?任何人都可以帮助我这个

我正在使用 iReport3.6.0。

示例代码:

 <textField>
  <reportElement x="400" y="10" width="80" height="15"/>
  <textElement textAlignment="Left" verticalAlignment="Middle"/>
  <textFieldExpression     class="java.lang.String">
               <![CDATA[$F{intValue}]]>
  </textFieldExpression>
 </textField>

在上面的代码中,“$F{intValue}”返回整数。我想将它传递给一个方法,并且方法返回类型想要是字符串。

谢谢

4

2 回答 2

17

使用静态方法编写一个辅助 Java 类,该方法将接收整数参数并返回所需的结果:

package com.yourname.reports.util;

public class JrUtils {
  public static String intFormatter(int arg) {
    return "Beautified int: " + arg;
  }
}

将此类添加到用于编译 jasperreports 模板和运行时的类路径中。在 iReport 中,右键单击“报告检查器”视图中的报告标题,然后选择“属性”。向下滚动到“导入”并添加您的课程:

com.yourname.reports.util.JrUtils

将导入 Java 类添加到您的报告中,并使用以下方法从字段中调用静态方法:

<![CDATA["Transformed int: " + JrUtils.intFormatter($F{intValue}) ]>
于 2009-09-24T09:07:37.750 回答
2

@Boris Pavlović 的回答很好,但我认为它错过了一点 think- classpath。因此,如果您在编译时遇到错误,例如:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 
Only a type can be imported. com.core.report.Util resolves to a package import com.core.report.Util; 

. Util cannot be resolved value = (java.lang.String)(Util.doit(((java.sql.Timestamp)field_time.getValue())));

您必须添加您项目的 *.jar ,其中包含声明的帮助程序类,如下所示:

> In You iReport Designer go to Tool -> Options -> iReport -> Classpath -> 
and press button "Add JAR" and select You project's jar.
于 2017-08-30T07:21:08.243 回答