jasperReports+iReport使用说明.doc_第1页
jasperReports+iReport使用说明.doc_第2页
jasperReports+iReport使用说明.doc_第3页
jasperReports+iReport使用说明.doc_第4页
jasperReports+iReport使用说明.doc_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

jasperReports、iReport使用说明作者陈大伟作成日2008.9.10(教师节)版本0.0.1备注jasperReports版本3.0.1 iReport版本3.0.0相关网址JasperReport下载地址:IReport下载地址:iText亚洲语言包下载地址:/iTextJasperReports API 帮助:/api/1. readme为什么需要JasperReports? JasperReports是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,XML,Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。它的主要目的是辅助生成面向页面的(page oriented),准备付诸打印的文档。JasperReport借由定义于XML文档中的report design进行数据组织。这些数据可能来自不同的数据源,包括关系型数据库,collections,java对象数组。通过实现简单的接口,用户就可以将report library插入到订制好的数据源中。为什么需要iReport?JasperReport借由定义于XML文档中的report design进行数据组织但是繁琐的XML标记和功能API在提供强大的动态及可扩展开发的同时也带来了超高的复杂性,所以我们需要一个图形化可视的IDE来编辑符合jasperReports API的XML文件。而iReport正是这样一款工具。我们用iReport可以进行可视化的报表设计。然而任何事物都不是十全十美的,iReport这一款工具带给我们方便、快捷、直观的同时,也损失了报表设计的灵活性。但就其实用性而言,所损失的灵活性也就微乎其微了。2. iReport上手(1) 语言设置,安装好iReport以后,默认语言是繁体中文由于汉化不完全,为确保词义的一致性.推荐使用英文选好语言后,点击应用,更改后的界面如下.(2) 下面是一个较快上手的小例子,如有基础,可以跳过,无须浪费时间点此新建报表为新建报表起个名字点击这里,在页面上拖动,可以画一个静态文本域.双击可修改显示内容点击运行(不连接数据库)运行效果(3) iReport各部分简单说明用于对齐页面元素,当页面元素多的时候,可用这些按钮进行对齐.类似于word中的字体设置iReport提供的页面元素,通过拖拽可以画到页面上.页面标题域,一个页面只出现一次.页头域列头域数据域,需要迭代的数据放在这里列脚域页脚域这个页脚,只在最后一页出现图形,图片放在这个域里 Title:每个报表一般会有一个名字,比如销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。 pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。 columnHeader:无可非议的这里是放置列的名称,记住不是列数据。 Detial:放置需要循环的数据,比如销售记录数据。 columnFooter:放置列级别的统计计算值或是列的说明。 pageFooter:放置页级别的统计值或是页的说明。 Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。 groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。 Groupfooter:放置组的统计或是说明3. iReport数据库连接设置数据连接设置支持的数据库驱动类型.注意:iReport默认只支持mysql和odbc数据源.如果想使用其他类型数据源,请自行下载驱动jar包,放下iReport安装目录下的lib文件夹内,重启iReport,添加驱动生效.这里使用oracle瘦客户驱动,需自己添加jar包.都添好以后,点击测试一下连接是否可用.弹出测试成功!测试连接没有问题以后,保存并退出连接设置.4. iReport连接数据库报表查询(1) 新建报表(2) 输入sql文,检出字段.输入SQL文以后,下面列出所检索的字段名字及类型.点击OK,检索出的字段显示到这里了.(3) 拖拽需要迭代显示的字段到detail区域(4) 为了使报表更美观,将报表做简单修饰分别将不必要的显示区域的高度设置为0设置好以后点击Apply,使应用生效。(5) 其他区哉如法炮制,最后留下detail区域,通过鼠标拖曳标记为红线的边框线,以适应文本区域的高度(6) 对齐按钮使用为了确保精确度,选择所有文本框,点击这个按钮,将文本框的纵向填满detail区域.(7) 添加列名及标题点击静态文本域按钮,在需要的显示域中通过拖曳即可画出文本框(8) 预览一切调整合适后,点击这个按钮,进行连接数据库的预览预览效果(9) 选择预览格式(html,xls,pdf)iReport默认使用JR Viewer展示预览效果,我们还可以使用html,xls,pdf及其他形式显示预览效果选择好以后点击应用,然后保存选择所使用的预览器再次点击这个预览按钮5. iReport图形报表的绘制(1) 新建报表,调整各显示区域的高度(2) 添加图形控件点击这个按钮,通过拖曳的方式在界面上画图.此时会弹出一个图形报表选择框,选择应用的图表类型,这里选择柱形图选择这个柱形图表,点击OK(3) 添加SQL文添好后点击OK此时,Fields会有所检出的字段(4) 为柱形图表捆绑数据点击添加图例名称X轴数值Y轴数值点击这个按钮,选择值选好数值以后,点击OK选好各值以后,界面如下(5)调整图表到适当大小点击预览(6)执行结果6. JasperReports API导出HTML报表(1) 绘制模板,并且编译成.jasper文件(2) 将编译好的.jasper文件考备到WEB工程下(3) 界面上通过一个超级链接,跳转到后台test report 1(4) STRUTS 2的配置文件(5) 后台方法由于匆忙,代码未加格式化,为了清晰可考备到文本中查看public void testReport1() / 加载.jasper文件 File jasperRile = new File(ServletActionContext.getServletContext().getRealPath(/jasper/TestReport1.jasper); try / 构造JasperReport 文件 JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jasperRile.getPath(); / 用数据填充JasperReport文件 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, getSimpleDao().getHibernateSession().connection(); / 声明HTML类型的导出类 JRHtmlExporter exporter = new JRHtmlExporter(); / 设置导出JASPER_PRINT exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint); / 设置导出流 exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, response.getWriter(); / 设置IS_USING_IMAGES_TO_ALIGN为false,不显示图片 exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); / 导出编码 exporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING, gb2312); / 页面编码 response.setCharacterEncoding(gb2312); / 导出 exporter.exportReport(); catch(Exception e) e.printStackTrace(); (6)预览结果7. JasperReports API导出EXCEL报表(1) 绘制模板,并且编译成.jasper文件(2) 将编译好的.jasper文件考备到WEB工程下(3) 界面上通过一个超级链接,跳转到后台test report 1(4) STRUTS 2的配置文件(5) 后台方法由于匆忙,代码未加格式化,为了清晰可考备到文本中查看public void testReport1() / 加载.jasper文件 File jasperRile = new File(ServletActionContext.getServletContext().getRealPath(/jasper/TestReport1.jasper); try / 构造JasperReport 文件 JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jasperRile.getPath(); / 用数据填充JasperReport文件 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, getSimpleDao().getHibernateSession().connection(); / 声明导出对像 JRXlsExporter exporter = new JRXlsExporter(); / 设置导出哪个模板 exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); / 设置导出流 exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream(); / 设置Xls的属性 exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); / 告诉浏览器是导出操EXCEL文件操作 response.setHeader(Content-Disposition, attachment; filename=cyjgcyb.xls); response.setContentType(application/vnd.ms-excel); exporter.exportReport(); catch(Exception e) e.printStackTrace(); (6) 执行结果打开EXCEL,查看导出结果8. JasperReports API导出PDF报表(1) 绘制模板,并且编译成.jasper文件(2) 将编译好的.jasper文件考备到WEB工程下(3) 界面上通过一个超级链接,跳转到后台test report 1(4) STRUTS 2的配置文件(5) 后台方法由于匆忙,代码未加格式化,为了清晰可考备到文本中查看public void testReport1() / 加载.jasper文件 File jasperRile = new File(ServletActionContext.getServletContext().getRealPath(/jasper/TestReport1.jasper); try / 构造JasperReport 文件 JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jasperRile.getPath(); / 用数据填充JasperReport文件 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, getSimpleDao().getHibernateSession().connection(); / pdf导出设置 response.setContentType(application/pdf); response.setCharacterEncoding(UTF-8); / 使用JRPdfExproter导出器导出pdf JRPdfExporter exporter = new JRPdfExporter(); / 设置JasperPrintList exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint); / 设置导出流 exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, response.getOutputStream(); / 开始导出 exporter.exportReport(); catch(Exception e) e.printStackTrace(); (6) 执行结果9.JasperReports API导出子报表(1) 为了直观一些,我们先来看子报表导出的结果子报表subReport_3_left.jasper子报表subReport_3_right.jasper(2)报表绘制这里面需要画三张报表,其中两个子报表,一个父报表.详细如下:A. 绘制子报表subReport_3_right.jrxml 先画出报表的静态部分 添加Fields,和Parameters输入需要迭代的字段名字,因为这里采用datasource数据源-即外部将检索结果传给报表,所以这里写的是javabean中的属性名字.值得注意的是,大小写及数据类型都要同javabean里面的相应属性一至.选择类型添加年月和井口产液量的字段,其中年月是String类型,井口产液量是bigDecimal类型. 添加参数这个参数作为这个报表的数据源,由父报表传递进来.注意类型B. 绘制子报表subReport_3_left.jrxml详细操作参照A,界面如下C. 绘制主报表subReport_3_main.jrxml这个就是父报表了,我们通过这个父报表来调用A和B当中制做的两张子报表. 先画出静态部分,如下图 添加子报表点击子报表按钮,在界面上拖动,弹出如下所示子报表创建窗口.这里我们选择使用已经存的子报表选择子报表 之后一路点击next,直到finish,并且使用同样的方法将subReport_3_Right.jrxml添加到父报表中 添加参数参数:DatasourceForLeftSubreport类型:net.sf.jasperreports.engine.JRDataSource作为数据源提供给子报表subReport_3_left.jasper参数:DatasourceForRightSubreport类型:net.sf.jasperreports.engine.JRDataSource作为数据源提供给子报表subReport_3_right.jasper 为子报表配置数据源选择数据源类型选择刚才创建的两个数据源参数把数据源作为参数传递给子报表,注意,子报表中要有一个名字为dataSource的参数接收数据源. 左边子表的数据源设置好以后,再设置右边子表的数据源鼠标右键,选择属性(3) 将三张报表编译好的jasper文件放到工程内(4) 界面链接subreport trans Datasource(5) STRUTS2 配置文件 (6) 后台处理方法public void subreportTransDatasource() / 声明指向父报表subReport_3_main绝对路径的字符串 String jasperFile = ServletActionContext.getServletContext().getRealPath(/jasper/subReport_3_main.jasper); / 声明指向报表根目录的字符串,主报表需要通过这个路径找到子报表 String jasperRoot = ServletActionContext.getServletContext().getRealPath(/jasper)+; / 声明向父报表传递参数的map Map parameterMap = new HashMap(); try / 构造JasperReport 文件 JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jasperFile); / left subreport / 检索子报表subReport_3_left.jasper的数据源 String strSql = select ny,count(jkcyl) AS jkcyl from kfsj where ny LIKE 2007% GROUP BY ny; List listIncludeObjects = getSimpleDao().findBySQL(strSql); List listIncludeBeans = reconstructList_chartTest(listIncludeObjects); JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(listIncludeBeans); / 设置子报表所在的路径 parameterMap.put(SUBREPORT_DIR, jasperRoot); / 设置DatasourceForLeftSubreport参数,这个参数将作为子报表的数据源被传递 parameterMap.put(DatasourceForLeftSubreport, datasource); / right subreport / 检索子报表subReport_3_right.jasper的数据源 strSql = select ny,count(jkcyl) AS jkcyl from kfsj where ny LIKE 2008% GROUP BY ny; listIncludeObjects = getSimpleDao().findBySQL(strSql); listIncludeBeans = reconstructList_chartTest(listIncludeObjects); JRBeanCollectionDataSource datasourceForRight = new JRBeanCollectionDataSource(listIncludeBeans); / 设置DatasourceForLeftSubreport参数,这个参数将作为子报表的数据源被传递 parameterMap.put(DatasourceForRightSubreport, datasourceForRight); / 用数据填充JasperReport文件 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameterMap); / 声明HTML类型的导出类 JRHtmlExporter exporter = new JRHtmlExporter(); / 设置导出JASPER_PRINT exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint); / 设置导出流 exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, response.getWriter(); / 设置IS_USING_IMAGES_TO_ALIGN为false,不显示图片 exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); / 导出编码 exporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING, UTF-8); / 页面编码 response.setCharacterEncoding(UTF-8); / 导出 exporter.exportReport(); catch(Exception e) e.printStackTrace(); (7) 执行效果10.JasperReports

温馨提示

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

评论

0/150

提交评论