自定义报表概要设计.doc_第1页
自定义报表概要设计.doc_第2页
自定义报表概要设计.doc_第3页
自定义报表概要设计.doc_第4页
自定义报表概要设计.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自定义报表概要设计自定义报表概要设计11. 编写目的22. 定义22.1 JXDataSource23. 总体设计33.1 需求规定33.1.1 获取报表配置文件33.1.2 解析配置文件及模板33.2 运行环境33.3 处理流程43.4 未解决问题44. 接口设计44.1 用户接口44.1.1 获取PDF结果54.1.2 获取excel结果54.1.3 获取Html结果64.1.4 获取XML结果64.1.5 获取纯文本结果74.2 内部接口84.2.1 获取JasperReport对象84.2.2 获取JasperPrint对象891. 编写目的a、规范jasperreport报表工具整合方式b、定义通用报表工具接口2. 定义2.1 JXDataSource该类需要实现接口JRDataSource,用来为设计好的报表提供数据源,该类有以下几个要求:a、定义List data, int index, int max三个成员变量,data为数据列表,index为数据索引,max为最大数据集b、定义带参数构造方法,参数为List list,构造方法内部用list给成员变量赋值,并用list.size()给成员变量max赋值,用-1给成员变量index赋值c、实现next()方法,将index加一然后和max比较大小,只要比max小,都返回true,否则返回false,以便遍历整个datad、实现getFieldValue(JRField field)方法。取出index索引所在的对象obj,返回obj中,名为field.getName()的字段的值。核心代码:Object obj = data.get(index);Field f = obj.getClass().getDeclaredField(arg0.getName();return JXFieldUtil.getFieldValue(f, obj);3. 总体设计3.1 需求规定3.1.1 获取报表配置文件a、定义配置文件放置路径:在web.xml中定义配置文件的根目录,在系统启动时,初始化到全局对象中,从而方便后面使用。b、定义通用配置文件获取方法:定义通用的配置文件获取方式,对获取失败、文件不可读等异常信息进行处理。3.1.2 解析配置文件及模板解析jasperreport配置模板,并从数据源中获取报表数据,组装成报表后,按指定格式返回给用户。至少需要支持PDF、Excel、HTML、XML、纯文本五种格式。其中HTML直接将结果写入response,方便用户前台浏览。其他几种格式写入服务器文件,并返回文件路径,方便用户下载使用。3.2 运行环境1、作为其它工程的类库,由其它需要使用报表自定义功能的J2EE项目进行调用。使用JDK1.6以上2、设计报表请选择javabean做数据源3.3 处理流程a、调用:根据用户的选择,调用不同的接口,从而进行不同报表格式的处理。b、根据业务拼装参数及加载数据集。c、获取jasperreport报表配置文件,并进行报表的数据填充。d、将填充好的报表返回给用户。HTML格式直接返回HTML页面,方便用户预览,其他格式,先将报表缓存到服务器,然后返回文件路径,以供用户下载使用。3.4 未解决问题a、用户自定义报表模板b、如何动态传递参数,进行带条件的查询报表c、网页预览时,背景图片不能正常显示4. 接口设计4.1 用户接口4.1.1 获取PDF结果loadPDFReport(HttpServletResponse response, String configFile, Map params, List data, String fileName):获取PDF格式的报表,先解析报表为PDF文件,并存放到服务器的临时文件夹中,然后返回文件路径,以供用户下载使用。此方法要求先根据业务需求组装参数,及数据结果集,然后设置response的返回类型及数据。参数:response : HttpServletResonse对象,用来向浏览器返回内容configFile : 所对应的jasperreport模板名称,该文件已经放入了指定的文件夹内params : 生成报表需要的参数,以map形式传入data : 数据结果集fileName : 返回文件名称关键代码:JasperReport jr = loadJasperReport(configFile);JXDataSource ds = new JXDataSource(data);JasperPrint jp = loadJasperPrint(jr, params, ds);OutputStream out = response.getOutputStream();response.setContentType(application/pdf;charset=ISO8859-1);response.setHeader(Content-Disposition, attachment;filename= + new String(fileName.getBytes(), ISO8859-1) + );JRPdfExporter pdf = new JRPdfExporter();pdf.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);pdf.setParameter(JRExporterParameter.OUTPUT_STREAM, out);pdf.exportReport();4.1.2 获取excel结果loadExcelReport(HttpServletResponse response, String configFile, Map params, List data, String fileName):获取Excel格式的报表,先解析报表为Excel文件,并存放到服务器的临时文件夹中,然后返回文件路径,以供用户下载使用。此方法要求先根据业务需求组装参数,及数据结果集,然后设置response的返回类型及数据。参数:response : HttpServletResonse对象,用来向浏览器返回内容configFile : 所对应的jasperreport模板名称,该文件已经放入了指定的文件夹内params : 生成报表需要的参数,以map形式传入data : 数据结果集fileName : 返回文件名称关键代码:JasperReport jr = loadJasperReport(configFile);JXDataSource ds = new JXDataSource(data);JasperPrint jp = loadJasperPrint(jr, params, ds);OutputStream out = response.getOutputStream();response.setContentType(application/vnd.ms-excel;charset=ISO8859-1);response.setHeader(Content-Disposition, attachment;filename= + new String(fileName.getBytes(), ISO8859-1) + );JExcelApiExporter excel = new JExcelApiExporter();excel.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);excel.setParameter(JRExporterParameter.OUTPUT_STREAM, out);excel.exportReport();4.1.3 获取Html结果loadTXTReport(HttpServletResponse response, String configFile, Map params, List data, String fileName):获取TXT格式的报表,先解析报表为TXT文件,并存放到服务器的临时文件夹中,然后返回文件路径,以供用户下载使用。此方法要求先根据业务需求组装参数,及数据结果集,然后设置response的返回类型及数据。参数:response : HttpServletResonse对象,用来向浏览器返回内容configFile : 所对应的jasperreport模板名称,该文件已经放入了指定的文件夹内params : 生成报表需要的参数,以map形式传入data : 数据结果集fileName : 返回文件名称关键代码:JasperReport jr = loadJasperReport(configFile);JXDataSource ds = new JXDataSource(data);JasperPrint jp = loadJasperPrint(jr, params, ds);OutputStream out = response.getOutputStream();response.setContentType(text/plain;charset=utf-8);JRHtmlExporter html = new JRHtmlExporter();html.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);html.setParameter(JRExporterParameter.OUTPUT_STREAM, out);html.exportReport();4.1.4 获取XML结果loadXMLReport(HttpServletResponse response, String configFile, Map params, List data, String fileName):获取XML格式的报表,先解析报表为XML文件,并存放到服务器的临时文件夹中,然后返回文件路径,以供用户下载使用。此方法要求先根据业务需求组装参数,及数据结果集,然后设置response的返回类型及数据。参数:response : HttpServletResonse对象,用来向浏览器返回内容configFile : 所对应的jasperreport模板名称,该文件已经放入了指定的文件夹内params : 生成报表需要的参数,以map形式传入data : 数据结果集fileName : 返回文件名称关键代码:JasperReport jr = loadJasperReport(configFile);JXDataSource ds = new JXDataSource(data);JasperPrint jp = loadJasperPrint(jr, params, ds);OutputStream out = response.getOutputStream();response.setContentType(text/xml;charset=utf-8);JRXmlExporter excel = new JRXmlExporter();xml.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);xml.setParameter(JRExporterParameter.OUTPUT_STREAM, out);xml.exportReport();4.1.5 获取纯文本结果loadTXTReport(HttpServletResponse response, String configFile, Map params, List data, String fileName):获取TXT格式的报表,先解析报表为TXT文件,并存放到服务器的临时文件夹中,然后返回文件路径,以供用户下载使用。此方法要求先根据业务需求组装参数,及数据结果集,然后设置response的返回类型及数据。参数:response : HttpServletResonse对象,用来向浏览器返回内容configFile : 所对应的jasperreport模板名称,该文件已经放入了指定的文件夹内params : 生成报表需要的参数,以map形式传入data : 数据结果集fileName : 返回文件名称关键代码:JasperReport jr = loadJasperReport(configFile);JXDataSource ds = new JXDataSource(data);JasperPrint jp = loadJasperPrint(jr, params, ds);OutputStream out = response.getOutputStream();response.setContentType(text/plain;charset=utf-8);JRTextExporter text = new JRTextExporter();text.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);text.setParameter(JRExporterParameter.OUTPUT_STREAM, out);text.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, 200);text.setParam

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论