如何从List <myobject>?</myobject>创建报告(jasperreport)

时间:2014-07-31 18:08:14

标签: java jasper-reports

我已经创建了报告(report1.jrxml)来复制它(report1.jasper),我只想填写此列表的信息:List<MyObject>

public class MyObject {
    private String name;
    private int phone;
    //getters & setters...
}

已从数据库中检索列表的数据,因此我想使用列表的信息来填充报告。

我想创建一个pdf。

请帮帮我。

2 个答案:

答案 0 :(得分:0)

如果您询问将集合从java代码传递给jasperreports,最好的方法是使用:

net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

修改

完整示例:

HashMap<String, Object> parameters = new HashMap<>();
List<MyObject> objects = new ArrayList<>();
JRBeanCollectionDataSource jDataSource = new JRBeanCollectionDataSource(objects);

// Load report
ClassPathResource report = new ClassPathResource("/myReport.jasper");
InputStream input = report.getInputStream();

// Fill the report with data
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(input);
JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters, jDataSource);

// Export the report to the output
ByteArrayOutputStream output = new ByteArrayOutputStream()
JRExporter exporter = new JRPdfExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
exporter.exportReport();

// Return the byte[]
return output.toByteArray();

答案 1 :(得分:0)

见下相关代码:

List<MyObject> list//list contains the data used to fill report
JasperDesign design=JRXmlLoader.load(file);//file is your .jrxml file or .jasper file
JasperReport report==JasperCompileManager.compileReport(design);
JasperPrint print=JasperFillManager.fillReport(report,parameter,new JRBeanCollectionDataSource(list));

现在,您可以使用print对象将报告导出为所需格式。 希望它有所帮助。