ireport+jasperreport使用心得---使用sub dataset为crosstab添加数据,填充pdf中文不显示问题

本文介绍了在ireport中使用sub dataset为crosstab添加数据的步骤,包括在parameters中添加parameter,创建sub dataset,设置crosstab数据源。同时,针对填充pdf时中文不显示的问题,提出了在java代码中建立Map参数并特别关注对特定parameter赋值的方法,以及在无detail数据时使用JREmptyDataSource的解决方案。
记录使用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包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值