Java JasperReport设置参数
我和JasperReport有些问题。我通过iReport生成了一个*.jrxml文件。 这里我定义了一些字段。现在我想在Java应用程序中设置这些字段,但它不起作用 我的代码看起来像Java JasperReport设置参数,java,xml,jasper-reports,Java,Xml,Jasper Reports,我和JasperReport有些问题。我通过iReport生成了一个*.jrxml文件。 这里我定义了一些字段。现在我想在Java应用程序中设置这些字段,但它不起作用 我的代码看起来像 JasperReport report; JasperPrint print; HashMap<String, Object> parameters = new HashMap<String, Object>(); parameters.put("logoPat
JasperReport report;
JasperPrint print;
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("logoPath", "\\logo.jpg");
parameters.put("companyName", "Company Name");
try {
report = JasperCompileManager
.compileReport("JRXML\\Template.jrxml");
for (JRField field : report.getFields()) {
System.out.println(field.getName() + "|"
+ field.getValueClassName());
}
print = JasperFillManager.fillReport(report, parameters,
new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(print,
"\\temp\\Example.pdf");
JasperViewer.viewReport(print);
} catch (Exception e) {
// TODO Auto-generated catch block
Logger.getLogger(Example1.class.getName()).log(Level.ALL,
e.getLocalizedMessage());
e.printStackTrace();
}
JasperReport报告;
碧玉版画;
HashMap参数=新的HashMap();
参数.put(“logoPath”,“\\logo.jpg”);
参数。put(“公司名称”、“公司名称”);
试一试{
报告=JasperCompileManager
.compileReport(“JRXML\\Template.JRXML”);
for(JRField字段:report.getFields()){
System.out.println(field.getName()+“|”
+field.getValueClassName());
}
print=JasperFillManager.fillReport(报告、参数、,
新JREptyDataSource());
JasperExportManager.exportReportToPdfFile(打印、,
“\\temp\\Example.pdf”);
JasperViewer.viewReport(打印);
}捕获(例外e){
//TODO自动生成的捕捉块
Logger.getLogger(例如1.class.getName()).log(Level.ALL、,
e、 getLocalizedMessage());
e、 printStackTrace();
}
字段在*.jrxml文件中给出
感谢您的帮助您将参数与字段混淆了。参数定义为
,而字段定义为
。将公司名称转换为jrxml中的参数,它应该可以工作
来自教程
参数
参数是传递到报表中的对象引用
填充操作。它们对于传递给报告非常有用
通常无法在其数据源中找到的引擎数据
字段
报表字段表示从数据源映射数据的唯一方法
进入报告生成例程。当
报表是结果集,所有字段必须映射到中的相应列
结果集对象。也就是说,它们必须与
它们映射的列和兼容类型
原始答案:
使用logo.jpg的文件解析器,Jasper将使用该解析器解析文件位置
FileResolver fileResolver = new FileResolver() {
@Override
public File resolveFile(String fileName) {
URI uri = null;
try {
uri = new URI(this.getClass().getResource("/" + fileName).getPath());
} catch (URISyntaxException e) {
}
return new File(uri.getPath());
}
};
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("logoPath", "\\logo.jpg");
parameters.put("companyName", "Company Name");
parameters.put("REPORT_FILE_RESOLVER", fileResolver);
...
print = JasperFillManager.fillReport(report, parameters,
new JREmptyDataSource());
FileResolver FileResolver=newfileresolver(){
@凌驾
公共文件解析文件(字符串文件名){
URI=null;
试一试{
uri=新uri(this.getClass().getResource(“/”+文件名).getPath());
}捕获(URISyntaxException e){
}
返回新文件(uri.getPath());
}
};
HashMap参数=新的HashMap();
参数.put(“logoPath”,“\\logo.jpg”);
参数。put(“公司名称”、“公司名称”);
参数.put(“报告文件解析程序”,文件解析程序);
...
print=JasperFillManager.fillReport(报告、参数、,
新JREptyDataSource());
您将参数与字段混淆。参数定义为
,而字段定义为
。将公司名称转换为jrxml中的参数,它应该可以工作
来自教程
参数
参数是传递到报表中的对象引用
填充操作。它们对于传递给报告非常有用
通常无法在其数据源中找到的引擎数据
字段
报表字段表示从数据源映射数据的唯一方法
进入报告生成例程。当
报表是结果集,所有字段必须映射到中的相应列
结果集对象。也就是说,它们必须与
它们映射的列和兼容类型
原始答案:
使用logo.jpg的文件解析器,Jasper将使用该解析器解析文件位置
FileResolver fileResolver = new FileResolver() {
@Override
public File resolveFile(String fileName) {
URI uri = null;
try {
uri = new URI(this.getClass().getResource("/" + fileName).getPath());
} catch (URISyntaxException e) {
}
return new File(uri.getPath());
}
};
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("logoPath", "\\logo.jpg");
parameters.put("companyName", "Company Name");
parameters.put("REPORT_FILE_RESOLVER", fileResolver);
...
print = JasperFillManager.fillReport(report, parameters,
new JREmptyDataSource());
FileResolver FileResolver=newfileresolver(){
@凌驾
公共文件解析文件(字符串文件名){
URI=null;
试一试{
uri=新uri(this.getClass().getResource(“/”+文件名).getPath());
}捕获(URISyntaxException e){
}
返回新文件(uri.getPath());
}
};
HashMap参数=新的HashMap();
参数.put(“logoPath”,“\\logo.jpg”);
参数。put(“公司名称”、“公司名称”);
参数.put(“报告文件解析程序”,文件解析程序);
...
print=JasperFillManager.fillReport(报告、参数、,
新JREptyDataSource());
您是在谈论字段还是参数?我看到您只是打印出字段,从未设置它们..在.jrxml文件中,我定义了名为logoPath和companyName的字段。在我读过的教程中,他们说我可以用HashMap设置字段,其中键是字段名。虽然我会用fillReport()方法设置参数,但你说的是字段还是参数?我看到您只是打印出字段,从未设置它们..在.jrxml文件中,我定义了名为logoPath和companyName的字段。在我读过的教程中,他们说我可以用HashMap设置字段,其中键是字段名。虽然我会用fillReport()方法设置参数,谢谢你的回答,但没有解决问题。在pdf文件中,所有字段都显示为null。好的,我建议您从java代码和jrxml中注释掉关于logo.jpg的部分,然后运行它,如果出现“Company Name”,然后是文件解析程序问题,另外参数有问题。我已经注释掉了xml和java应用程序中的logoPath字段,但companyName的值仍然为null。它在xml文件中给出,作为jrxml中为logoPath和companyName定义的参数类是什么?谢谢为了你的答案,但没有解决问题。在pdf文件中,所有字段都显示为null。好的,我建议您只需从java代码和jrxml中注释掉关于logo.jpg的部分,然后运行它,如果出现“Company Name”,那么这是一个文件解析程序问题,或者参数有问题。我已经注释掉了xml和java应用程序中的logoPath字段,但是Company的值