我的jrxml和Java代码如下.我正在尝试使用一些文本和值创建报告.但是,将生成空白报告.我正在粘贴地图以将报告填充为参数.我必须添加4-5条静态行,然后添加一个动态变量.我在详细的乐队中添加了这些东西.错了什么
name="Untitled_report_2"
columnCount="1"
printOrder="Vertical"
orientation="Portrait"
pageWidth="595"
pageHeight="842"
columnWidth="535"
columnSpacing="0"
leftMargin="30"
rightMargin="30"
topMargin="20"
bottomMargin="20"
whenNoDataType="NoPages"
isTitleNewPage="false"
isSummaryNewPage="false">
x="20"
y="10"
width="180"
height="30"
key="staticText-1"/>
x="20"
y="40"
width="60"
height="20"
key="textField-1"/>
x="20"
y="70"
width="160"
height="30"
key="staticText-2"/>
Java代码:
InputStream fileInput = getApplicationContext().getResource("/WEB-INF/reports/myjrxml.jrxml").getInputStream();
JasperReport jasperReport = JasperCompileManager.compileReport(fileInput);
HashMap map = new HashMap();
map.put("Field", "test");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map);
byte[] output1 = JasperExportManager.exportReportToPdf(jasperPrint);
String filename = "d:/test.pdf";
FileOutputStream fo = new FileOutputStream(filename);
fo.write(output1);
fo.close();
解决方法:
您正在将报告数据与参数混淆.我看不到您有任何报告数据,这就是为什么您得到空报告的原因.此外,您要填充一个名为“ Field”的参数,而不是实际的报告数据.因此,您需要在报表中创建一个名为“字段”的参数,然后在详细信息区域中对其进行引用,或者您需要将报表数据传递到报表中,例如
JRBeanCollectionDataSource data = new JRBeanCollectionDataSource(dataSet);
jasperPrint = JasperFillManager.fillReport(jasperReport, parameterMap, data);
其中dataSet是一个集合,例如List.在列表中,您将拥有一个对象,其中属性之一是字段.
标签:jasper-reports,java
来源: https://codeday.me/bug/20191025/1925818.html