分享

ireport+jasperreport使用心得

 recruits 2014-05-23
记录使用iReport + JasperReport 交叉报表添加数据的流程:

在Java中使用JRDataSource填充Sub Dataset:
  1. 在iReport的报表模板的parameters中添加一个parameter,为其设定名字,并设定其Parameter Class为Object,设定其Default value expression字段的值为null,否则ireport会报空指针错误
  2. 创建一个sub dataset,为其设定一个名字,并在其fields中加入Crosstab所需要的各个字段,数据源选择empty datasource即可
  3. 在summary中创建一个crosstab,选择其dataset为第2步建立的sub dataset,并利用这个dataset的fields字段创立crosstab
  4. 右键点击Report Inspector栏中的crosstab,选择Crosstab data,在下面Dataset run中选择Sub dataset为刚才建立的sub dataset,在其Connection/Datasource exp中选择User datasource expression,在底下的expression栏中填入     :$P{第一步建立的Parameter的名字}
  5. 在java代码中,填充时首先建立一个Map<String,Object>的parameters map以便在fill时为parameters赋值,在这个parameters map中添加所有ireport中的手动创建的parameters,特别注意添加第一步时创建的parameter,key为其设定的名字,值为一个JRDataSource
  6. 填充报表时需要注意,如果没有其他detail数据时,需要填充一个JREmptyDataSource作为替代,例子如:JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,new JREmptyDataSource());
  7. 利用生成的JasperPrint 利用JasperExportManager生成结果文件即可
iReport导出pdf的中文不显示问题:
    在iReport中选定需要输入中文的字段,将其Pdf Font name修改成STSong-Light,并将其Pdf Encoding设定为UniGB-UCS2-H (Chinese Simplified) ,勾上Pdf Embedded,这样就可以了
    如果还是不能生成中文,则将iTextAsian的jar包加入到iReport的选项的classPath下即可,同理,在使用JasperFillManager填充的时候也必须在环境中添加此jar包

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多