当前位置: 首页 > 工具软件 > DynamicJasper > 使用案例 >

DynamicJasper创建动态报表

魏熠彤
2023-12-01

入职不久,公司要求用DynamicJasper做动态报表,之前的报表都是用Ireport画好模板,再从程序写入数据,Ireport都没接触过的我可犯了难,各种百度各种找文档找例子,网上的相关资料真是少的可怜,最后结合某个网站上的例子(具体真忘了是啥了,当时着急做也没仔细记),和jar包里的API,总算是做出来了,废话不说了,进入正题;

首先下载jar包,添加,就不详述了,百度也都有;

贴出代码:

//创建需要用到的对象
DynamicReport dr;
JasperReport jr;
JasperPrint print = null;
HashMap hm = new HashMap();
FastReportBuilder drb = new FastReportBuilder();

drb.addColumn(String ColumnName,String FieldName,String ClassName,int ValueLength);//参数分别是列名,列对应数据字段,值对应类型,值长度,后边还能加几个其他参数,例如Style(表头样式),API中都有列出
//下面设置一些显示相关的属性
drb.setPrintColumnNames(true);
drb.setIgnorePagination(true) ;
drb.setMargins(0, 0, 0, 0);
drb.setUseFullPageWidth(true);

dr = drb.build();

jr = DynamicJasperHelper.generateJasperReport(dr, new ClassicLayoutManager(), hm);//我用的时候hm就是空的,具体不清楚它能干什么

print = JasperFillManager.fillReport(jr, hm, DataSource);//DataSource是继承JasperReports的一个数据源类(具体记不清了,要看看公司电脑,有意向知道的朋友可以留言)的类,在其中定义数据的写入方式,我用的是循环判断查出的值的字段名称与前边表头设置的字段名称是否一致,一致的话就把该数据写入对应列

//创建报表对象
JExcelApiExporter exporter = new JExcelApiExporter();

FileOutputStream fos = new FileOutputStream(outFileName);//创建写入报表用的流,outFileName为输出文件名

//设置一些报表属性,其中前三条是必要的
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fos);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName);
exporter.setParameter(JRXlsExporterParameter.CHARACTER_ENCODING, "GB2312");
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_IGNORE_CELL_BACKGROUND, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_IGNORE_CELL_BORDER, Boolean.TRUE);

//打印报表
exporter.exportReport();

Excel的报表就打印完毕了,其中会有一些异常需要抛出或抓取,加上即可,CSV与TXT格式大同小异,只要同上得到print对象后,创建对应报表对象,再设置一些属性即可;

好吧,第一次写技术博,感觉有些不大清晰,有兴趣的朋友可以留言一起交流,over

 类似资料: