我已经创建了报告(report1.jrxml)来复制它(report1.jasper),我只想填写此列表的信息:List<MyObject>
public class MyObject {
private String name;
private int phone;
//getters & setters...
}
已从数据库中检索列表的数据,因此我想使用列表的信息来填充报告。
我想创建一个pdf。
请帮帮我。
答案 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
对象将报告导出为所需格式。
希望它有所帮助。