Eclipse RCP入门(八)BIRT报表的分页和生成中间document
Eclipse RCP入门(八)BIRT报表的分页和生成中间document
在朋友的帮助下,实现了BIRT的分页。
而且把BIRT的生成报表的过程分成了两个过程,
先要生成一个中间的DOCUMENT
核心代码修改如下
IRunTask task = engine.createRunTask(design);
//以前是调用IRunRenderTask,现在改为先run ,再render所以这里的方法变了
// 加入数据
task.setParameterValue("sample", "Carl");
List list = new ArrayList();
User user1 = new User("1", "sillycat");
User user2 = new User("2", "kiko");
User user3 = new User("3", "lovemike");
User user4 = new User("4", "mike");
User user5 = new User("5", "carl");
User user6 = new User("6", "kyy");
list.add(user3);
list.add(user2);
list.add(user1);
list.add(user4);
list.add(user5);
list.add(user6);
BirtDataSourceObject birtDataSourceObject = new BirtDataSourceObject();
birtDataSourceObject.setResultList(list);
task.addScriptableJavaObject("dsFactory", birtDataSourceObject);
//先生成中间DOCUMENT,这个时候已经有数据了
task.run("D:/birt/test.rptdocument");
task.close();
// 生成document成功
IReportDocument reportDocument = null;
reportDocument = engine
.openReportDocument("D:/birt/test.rptdocument");
IRenderTask renderTask = engine.createRenderTask(reportDocument);
// HTML
IRenderOption htmlOptions;
htmlOptions = new HTMLRenderOption();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
htmlOptions.setOutputStream(bos);
htmlOptions.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
renderTask.setRenderOption(htmlOptions);
renderTask.setPageNumber(1); //翻页的第一页
renderTask.render();
browser.setText(bos.toString());
// PDF
IRenderOption pdfOptions;
pdfOptions = new PDFRenderOption();
pdfOptions.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);
pdfOptions.setOutputFileName("D:/birt/test.pdf");
renderTask.setRenderOption(pdfOptions);
renderTask.setPageNumber(1);
renderTask.render();
// CSV
IRenderOption csvOptions;
csvOptions = new CSVRenderOption();
csvOptions.setOutputFileName("D:/birt/test.xls");
csvOptions.setOutputFormat(CSVRenderOption.OUTPUT_FORMAT_CSV);
renderTask.setRenderOption(csvOptions);
renderTask.setPageNumber(1);
renderTask.render();
// PPT
IRenderOption pptOptions;
pptOptions = new PPTRenderOption();
pptOptions.setOutputFileName("D:/birt/test.ppt");
pptOptions.setOutputFormat(PPTRenderOption.OUTPUT_FORMAT_PPT);
renderTask.setRenderOption(pptOptions);
renderTask.setPageNumber(1);
renderTask.render();
在test.rptdesign里面,选中table,在下面的properties里面有个
Page Break Interval的属性,就是分页的,设置多少个一页,就是平时的
page size