数量为jar文件在ireport设计器5.6.0中工作,但当集成到项目中时它无法正常工作

时间:2015-11-27 07:22:53

标签: java jsp jasper-reports

实际上我想转换一些计算(例如:123作为一百二十三的单词)。所以我分别设计了一个jar文件和ireport designer 5.6.0中的“Tools” - >“options” - >“classpath”并添加了jar并在“scriptlet”中我编写了com.reporter.jasper.ConvertToWord并在报告中创建了一个文本字段,并添加了“$ REPORT_SCRIPTLET.readNumber($ V {Total})”并保存了它。所以,当我点击预览标签时,它的工作完美(例如:64501为64.51)。

现在出现了问题。我复制了report.jrxml和report.jasper并将其粘贴在“/WEB-INF/reports/report.jrxml”中并在服务器上运行,以便转换为PDF,DOC,XLS ,XLSX它显示的错误如此图像enter image description here

我也提供了jar文件的代码

package com.reporter.jasper;
import java.io.PrintStream;
import net.sf.jasperreports.engine.JRDefaultScriptlet;

public class ConvertToWord extends JRDefaultScriptlet {
     String numberInWord = "";
        String inpstr = "";
        int inputLength;
        String temp = "";

        public String readNumber(double xDouble) {
            long x = (long)xDouble;
            this.inpstr = "" + x;
            this.inpstr = this.inpstr.trim();
            this.inputLength = this.inpstr.length();
            this.numberInWord = "";
            if (this.inpstr.substring(0, 1).trim().equalsIgnoreCase("-")) {
                this.inpstr = this.inpstr.substring(1);
                --this.inputLength;
            }
            this.getDigits(this.inputLength);
            return this.numberInWord;
        }

显示ireport图片

enter image description here

enter image description here

正如您在上面的Scriptlet类中看到的那样,“com.reporter.jasper”是包,“ConvertToWord”是类。

在文字字段$P{REPORT_SCRIPTLET}.readNumber($V{Sub Total} +$V{Output VAT and CST and Service Tax}) readNumber是方法名称。

所以我现在要做的就是成功地将数据显示为PDF,DOC,XLS和XLSX。

1 个答案:

答案 0 :(得分:0)

您的班级ConvertToWord也必须位于 Web应用程序类路径中,因此不足以将jar添加到iReport,您需要将它添加到WEB-INF。

作为备注:看不到整个ConvertToWord课程,但是如果你没有覆盖JRDefaultScriptlet的方法(在beforeDetailEval()上做了代码,那就是为了做代码)。

  

Scriptlet是每次报告事件发生时执行的Java代码序列。报告变量的值可以通过scriptlet影响

没有必要扩展它你可以简单地用一个方法做一个类并从你的jrxml中调用它

public class ReportHelper{
  public static synchronized String readNumber(double xDouble) {
    ...
  }
}

然后在jrxml es。

中调用你的类
ReportHelper.readNumber($V{Sub Total} +$V{Output VAT and CST and Service Tax})

如果您正在使用包,则包含包定义的完整路径。如果您不喜欢静态,请将ReportHelper类作为参数传递或将其定义为变量。

当然,类需要始终在classpath中。