报表学习(一):使用JasperReport+iReport进行WEB开发

之所以学习jasperReport,因为它在java世界里是最流行的报表工具。(jasperReport的初级教程,可以参考这个,不再赘余啦


定制报表格式。

有二种方式,一种就是写jrxml文件,其实就是xml文件。另一种方式更直接,就是生成一个JasperDesign类的实例,在japsperDesign类中自己定义模板。

jrxml文件也是通过JRXmlLoad加载,转成JasperDesign类的实例。也就是说jrxml文件还需要进行解析,加载。

开发中常通过iReport工具编辑jrxml文件生成模板,再用代码加载解析成类。

填充数据。

jasperReports支持了很多的格式,比如对HibernateMongoDbEJB的支持。

对于我们经常使用的,一般是二种方式,一种方式是通过JDBC连接提供数据源,一种就是通过Collection提供数据源。当然还有web Servicexml文件提供的。

我的建议是,如果你的程序中的统计直接使用Jdbc就可以完成,那么就使用jdbc数据源的方法,反之,使用javaBean的集合是不错的选择,因为这样不会在意你的数据的来源,你也可以任意处理,比如说,要通过权限检查的数据才在报表中生成的话,就可以过滤出不符合权限的数据。

这里只提供部分代码,想要基于SSH2的jasperReports演示完整代码,请到我的资源中下载,免积分。

Action中将Collection填充到jasperReports模板文件类中

public class PersonAction extends ActionSupport {
@Override
public String exportToHTML() throws Exception {
// 查询得到的person实体列表
persons = personDao.findPersion();
// 转换成JRBeanCollection
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(persons);
// 编译模板文件变成类
JasperReport jasperReport = (JasperReport)JasperCompileManager.compileReport(PersonAction.class.getResource("/").toString().substring(6) +"person.jrxml");
// 将Collection填充到模板文件类中
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,dataSource);
// 以html形式显示
        str = ExportReport.exportToHTML(jasperPrint);
return SUCCESS;
}


ExportReport类,将被填充后的模板文件类,以多种形式显示

这里展示的只是生成html格式的报表,其他格式比如pdfxmlExcel,他们都大同小异,可以在源码示例中看到。

public class ExportReport {
/**
 * 导出html
 * @param jasperPrint
 * @return
 */
public static String exportToHTML(JasperPrint jasperPrint){
StringBuffer sb = new StringBuffer();
try {
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, sb);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");
//报表边框图片设置IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE,不使用图片
    exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
    exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
/*                exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "");
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");
exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");*/
exporter.exportReport();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}


运行效果


在实际应用中,根据具体业务,利用可视化编辑工具iReport进行布局即可。

注意事项

  1. iReportJasperReport版本一致才行,iReport可通过兼容性设置版本

  1. ireport导出PDF,中文字体不显示

iReport默认情况下是不支持中文的,虽能在预览视图里良好的显示正常、粗体、斜体、下划线等,但部署到应用后部分功能无效果,只能以正常字体显示。

如需完整使用以上的功能,需要装中文字体包导入到iReprot软件里去。

Web应用程序中,同样需将导出的字体jar包放入classpath文件夹下。

参考ireport导出PDF 引入外部中文字体

小结

报表是几乎所有系统必不可少的模块,或者说是基本业务需求。报表可以帮助我们访问、格式化数据,并把数据信息呈现给使用者。

一提到展示给客户,就想到“受累不讨好”,你的系统无论是用的什么技术实现,无论是多大工作量,只要呈现给用户很烂,结果就是受累不讨好。所以,凡是给用户看到的,我们更该得到重视,虽然这话听着有点。。。,不过确实如此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值