在JSP中导出pdf和excel.doc_第1页
在JSP中导出pdf和excel.doc_第2页
在JSP中导出pdf和excel.doc_第3页
在JSP中导出pdf和excel.doc_第4页
在JSP中导出pdf和excel.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

环境配置1 正确安装配置java的jdk 2 将ireport放到c:ireport 3 将ant放到c:ant(我用的是bea的ant路径是D:beaweblogic81serverant) 4 将jasperreports-1.2.0.jar 放置到当前classpath中(没有加,我使用的Ireportlib下已经存在了)5 将itext-1.3.1.jar放置到c:ireportlib(没有加,我使用的Ireportlib下已经存在了) 6 修改ireportireport.bat文件,加入以下内容 set JAVA_HOME=C:j2sdk1.4.2 set ANT_HOME=D:beaweblogic81serverset IREPORT_HOME=c:ireport rem %ANT_HOME%binant javadocs %ANT_HOME%binant iReport 我修改的是:set JAVA_HOME=C:j2sdk1.4.2 set ANT_HOME=D:beaweblogic81server set IREPORT_HOME=F:backupiReport-1.2.0 rem %ANT_HOME%binant javadocs %ANT_HOME%binant iReport (不过对以上修改,感觉没有什么用处) 7 提供一个正常提供服务的数据库现在高版本的ireport是不需要进行配置,可以直接使用的. 了解制作报表用的包 1 jasperreports-1.0.1.jar jasperreports是iReport的核心内容,jsperreport是一个报表制作程序,用它的规则制定一个xml文件,然后编译生成一个.jsper文件,这个.jsper文件是我们真正使用的,它很象.jsp文件,使用的是它编译后的servlet. (/)2 itext-1.3.1.jar iText是一个开放源码的Java类库,是用来生成PDF文件的。如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包iTextAsian.jar (/downloads/iTextAsian.jar)3 jfreechart-1.0.0-rc1.jar jfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG等各式的文件。 (/jfreechart/) 4 jcommon-1.0.0-rc1.jar JCommon是一组有用的classes集合.它已经用在JFreeChart,JFreeReport与其它项目上. 这个类库包含了以下功能: 文本工具类(text utilities), 用来显示关于应用程序信息的用户界面类, 布局定制管理器, 一个日期选择面板, 序列化工具类, XML解析器支持类. (/jcommon/)5 poi-2.0-final-20040126.jar Apache的Jakata项目的POI子项目,目标是处理ole2对象。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。直接调用poi包的不是ireport,而是jasperreport。 (/dyn/closer.cgi/jakarta/poi/)使用介绍 1 启动:点击ireportireport.bat启动2 修改语言环境:tools-option-general中language中更改-apply 3 创建报表 file-new document 输入名字-ok Portrait是纵向,Landscape是横向。4 连接数据源 datasource-connection/datasource-new-connections porperties- 输入名字-选择jdbc Driver,jdbc url-输入username和password,-test测试通过表明数据源连接正确-save保存 (注意:必须保证数据库驱动在lib目录下)5 基本域说明 title域用来放报表的总标题pageHeaher域顾名思义页头columnHeader域是用来放static text的,也就是不循环的部分。 detail域是用来放text field的,也就是循环部分。 pageFooter域是用来放本页的统计参数的。summary域是用来放整个表的统计参数的。可以直接调整每个域的长度,也可以通过Band properties来调整 (在我的项目中,只设置的title和detail,在title中显示报表的总标题和所有parameters字段,在detail中显示需要循环的列表字段)6 在报表中添加字段static text edit-insert element -static text 鼠标拖拉添加在页面中双击或者右键properties在static text Tab 中输入字段名字,如果显示有乱码,font-font name中选择中文GB2312 border 中可以设置表格边线样式 7 在报表中添加字段text field edit-insert element -text field 鼠标拖拉添加在页面中双击或者右键properties在text field 中输入字段名字, 样式如同$Ftext_field_name, f表示为field变量,是数据库中抽取出来的,你想在报表中显示的数据库内容, p为parameter参数,是应用需要提供给报表的入口,比如想在报表被解释的时候提供where语句的条件值, 就可以用$P(parameterName)比如: select * from bugs where proname=$PprojectName order by proname,modulename v为变量(显示字体颜色为绿色,表示格式正确) border 中可以设置表格边线样式 8 调整报表布局鼠标拖动各个字段,拼接想要的报表布局,如果鼠标点击字段, 显示为红色,说明该字段跨越了两个域显示为绿色,说明两个字段叠加显示为蓝色,说明该字段位置正确 9 报表添加SQL查询语句 资料来源-报表查询(datasource-report query) 在Report SQL query里填写SQl语句。如果语句正确,在下面的field里就会显示正常的表字段。 (可以从显示的所有字段中选取想用做field的字段,点击ok后,自动添加为field动态字段)10 为报表添加动态字段预览-报表字段(view-Fields) 新建一个字段,字段名字必须和报表中Fields中添加名字一直,同时必须是sql结果集中存在的. (把fields里的字段直接拖到报表上也行) 11 为SQL语句添加参数 预览-报表参数(view-parameters) 在parameters里新增一个参数 paratemeter name 是参数名,在SQL语句里写成$P参数名 paratemeter class type里选择参数类型。 注意:如果是int型的数据,最好在报表字段里将该字段的Class type改成java.lang.String型的。 另外一种办法,不管该字段原来是什么数据类型,直接在paratemeter class type里选择java.lang.String类型, 后在Default value expression 填写Integer.toString(整数)。12 添加报表变量 预览-报表变量 $V变量名(没有用到过!) 13 处理字体 选中字段-右键-properties-font(双击也可以) Report font 选择全局的字体(仅限于该报表) Font name 选择在ireport里面显示的字体 Pdf font name 选择在pdf里面显示的字体 Rotation 选择内容是否旋转(很有用的选项) PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H 14 设定该报表的全局字体 预览-报表字型(view-font) 15 编译jrxml 建立-编译 (build-compile) 编译后生成一个后缀名为jasper的binary文件,可以直接给程序调用。 web项目应用 1 jsp输出PDF报表需要放到项目里的包 itext-1.3.1.jar iTextAsian.jar jasperreports-1.0.1.jar jsp输出PDF的例子 jsp输出EXCEL报表 需要放到项目里的包 jasperreports-1.0.1.jar poi-2.0-final-20040126.jar 输出excel要注意的: (1) 输出excel报表必须fields的边界刚好填充满整个页面,不然会有大量的空白出现。 (2) 删除记录最下面的空行需要加上参数 exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); (3) 删除多余的ColumnHeader需要加上参数 exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE); (4) 在ireport里给fields加上border,那输出的excel就会有很黑的边框,跟excel默认的灰度边框就会很不协调。但是如果不加border,在输出的excel里就不会显示每个表格的边框。 解决方法是: 第一步 在选中字段-右键-properties-Common-Transparent 打上勾。 第二步 在输出的jsp页面加上参数 exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE); 2 jsp输出EXCEL的例子/excel/excel/excel 0) response.reset(); response.setContentType(application/vnd.ms-excel); response.setContentLength(bytes.length); ServletOutputStream ouputStream = response.getOutputStream(); ouputStream.write(bytes,0,bytes.length); ouputStream.flush(); ouputStream.close(); else out.print(bytes were null!); conn.close(); catch(JRException ex) out.print(Jasper Output Error:+ex.getMessage(); %总结 ireport可以显示图表,饼图,曲线图等,也可以显示符合报表 JasperReports介绍: 使用JasperReports生成报表是非常简单的,仅仅使用net.sf.jasperreports.engine包中的几个类即可完成报表的生成、预览、打印、导出等各个功能。1. net.sf.jasperreports.engine.JasperCompileManager类。 使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档) 编译完成后可以JasperCompileManager有两种处理方式: 1 返回一个JasperReport对象 2 在.jrxml文件所在的目录生成一个.jasper文件 这两种方式是由程序员自己选择的。不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。2. net.sf.jasperreports.engine.JasperFillManager类 这个类的作用是用数据填充报表。它可以使用JasperReport对象也可以使用。jasper文件做为报表模板。 它同样有2中处理方式: 1 返回一个JsaperPrint对象。 2 在.jasper文件所在目录生成一个.jrprint文件 这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。任何实现了JRDataSource的类均可做为数据源使用 在net.sf.jasperreports.engine.data包中定义了一些数据源,可根据自己的需要选择。这里我使用的是JRTableModelDataSource做为 数据源(因为我的报表还要显示在Table中)。3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager 者两个类的作用是打印、导出报表 他们使用 JasperPrint 和 .jrprint文件做为输入。 可以根据自己的需要使用里面的方法。例: import net.sf.jasperreports.engine.*; import net.sf.jasperreports.view.*; public class CompileReport public static void main(String args) try /编译report.jrxml并在report.jrxml所在的目录中生成report.jasper文件 JasperCompileMpileReportToFile(report.jrxml); /填充数据,这里使用的是JREmptyDataSource JasperFillManager.fillReportToFile(report.jasper, null, new JREmptyDataSource(50); /预览报表,false代表不是使用xml文件。 JasperViewer view = new JasperViewer(reports.jrprint, false); view.pack(); view.setVisible(true); catch (Exception e) e.printStackTrace() 贺词网!JasperReports学习笔记版本:jasperreports-0.6.7学习资料来源:一、 需求(requirements)JasperReports要用到的工具和类1. JDK(java开发环境) JDK 1.2.2 or higher 2. XML JAXP 1.1 XML Parser(XML解析器) Jakarta Commons Digester Component (version 1.1 or later) /commons/digester/ Jakarta Commons BeanUtils Component (version 1.1 or later) /commons/beanutils/ Jakarta Commons Collections Component (version 1.0 or later) /commons/collections/ Jakarta Commons Logging Component (version 1.0 or later) /commons/logging/3. JDBC(连接数据库用) JDBC 2.0 Driver 4. PDF(转换为PDF文件用到) iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares (version 1.01 or later) /iText/ 5. XLS(转换为excel文件用) Jakarta POI (version 2.0 or later) /poi/二、快速了解(quick how to)1. Main classes(主要的类)用JasperReports 时,用到的主要类net.sf.jasperreports.engine.JasperCompileManager net.sf.jasperreports.engine.JasperFillManager net.sf.jasperreports.engine.JasperPrintManager net.sf.jasperreports.engine.JasperExportManager 这些类提供了很多静态方法,用来编译、填充、打印和导出报表。详细信息请参考JasperReports的javadoc文档。 net.sf.jasperreports.view.JasperViewer 此类用来预览生成的报表(generated reports.)。 net.sf.jasperreports.view.JasperDesignViewer 此类用来预览报表设计(view the report design)。 2. 编译报表设计Compiling a report design xml文件定义报表设计(report design)。编译报表设计(report design)产生报表(generate reports)。网页/quick.how.to.html中介绍用net.sf.jasperreports.engine.JasperCompileManager类的静态方法compileReportXXX()来编译报表设计(report design)。但是JasperCompileManager不赞成使用此方法编译报表设计(report design),推荐使用JasperCompileManager的方法compileReportXXX()来代替。 编译报表设计(report design)时,jasperreports engine首先检查模板,确定是否一致,然后转换所有的报表表达式(report expressions),最后产生.jasper文件。 要想使编译工作尽可能灵活,你可以实现接口net.sf.jasperreports.engine.design.JRCompiler。 3预览报表设计 Viewing a report design 使用net.sf.jasperreports.view.JasperDesignViewer的程序来预览。他的main()方法接受报表设计文件名(xml)或者编译后的.jasper文件。 4. 填充报表 Filling a report 编译报表设计(xml文件)得到报表文件(.jasper),再调用net.sf.jasperreports.engine.JasperFillManager类的方法fillReportXXX(),可以得到报表(JasperPrint)。5. 预览报表 Viewing a report Generated reports can be viewed using the net.sf.jasperreports.view.JasperViewer application. In its main() method, it receives the name of the file which contains the report to view. 我没有测试成功。6. Printing a report Generated reports can be printed using the printReport(), printPage() or printPages() static methods exposed by the net.sf.jasperreports.engine.JasperPrintManager class. 7. Exporting to PDF, HTML, XLS, CSV or XML format 填充报表文件(.jasper文件)得到报表(JasperPrint)后,可以使用net.sf.jasperreports.engine.JasperExportManager类的方法exportReportXXX()导出为各种格式的文件PDF,HTML,XML。After having filled a report, we can also export it in PDF, HTML or XML format using the exportReportXXX() methods of the net.sf.jasperreports.engine.JasperExportManager class.三、JasperReports的工作流程:根据上图的流程,JasperReports做报表有一下步骤:1、 报表设计,可以用ireport可视化工具来实现,生成xml文件。完成后,可以直接到步骤3,直接编译xml文件。2、 如果已经存在报表设计文件(xml文件),可以用net.sf.jasperreports.engine.xml.JRXmlLoader.load()方法载入报表设计,该方法返回JasperDesign对象,通过JasperDesig

温馨提示

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

最新文档

评论

0/150

提交评论