Jasper + ireport 集成报表到Web应用操作说明.docx

上传人:b****5 文档编号:15181048 上传时间:2023-07-02 格式:DOCX 页数:16 大小:386.37KB
下载 相关 举报
Jasper + ireport 集成报表到Web应用操作说明.docx_第1页
第1页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第2页
第2页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第3页
第3页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第4页
第4页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第5页
第5页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第6页
第6页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第7页
第7页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第8页
第8页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第9页
第9页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第10页
第10页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第11页
第11页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第12页
第12页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第13页
第13页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第14页
第14页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第15页
第15页 / 共16页
Jasper + ireport 集成报表到Web应用操作说明.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Jasper + ireport 集成报表到Web应用操作说明.docx

《Jasper + ireport 集成报表到Web应用操作说明.docx》由会员分享,可在线阅读,更多相关《Jasper + ireport 集成报表到Web应用操作说明.docx(16页珍藏版)》请在冰点文库上搜索。

Jasper + ireport 集成报表到Web应用操作说明.docx

Jasper+ireport集成报表到Web应用操作说明

 

北京xxxxxxxxx公司

JasperReport+ireport集成报表到Web应用

操作说明

郝建柱

2011/2/24

第一部分,下载与安装

Ireport官网:

http:

//jasperforge.org/,从这里可以下载到

下载后的文件名

安装:

没什么注意的,一路回车就好了

第二部分,ireport与JasperReport简单说明

1,ireport,是一个制作报表的工具,用其设计报表样式

2,JasperReport,是在程序里操作ireport报表的一套类库

先简单介绍,以下详细说明

第三部分,使用ireport制作报表

以ireport3.7.6为例,依次选择“文件–》New…”出现下图

在接下来出现的对话框中选择保存位置就好了。

建好的报表分这样几个部分,下面依次说明

Title:

报表标题,也就是在报表首页出现的

PageHeader:

报表每页的页头,PageFooter页脚

ColumnHeader:

列头,ColumnFooter列脚

Detail:

对数据源进行循环显示

Summary:

汇总,也就是在报表最后一页出现的

不需要的部分可以在ireport左边删掉,如下图示

接下来以Oracle数据库的scott用户中DEPT表为例,制做一个简单的报表

1,设置报表语言

在报表边缘外单击,在ireport右边的属性面板中找到Language属性,设置为Java,如下图示

2,以数据库为报表的数据源,显示简单的报表

首先,把oracle的jdbc驱动引到ireport里,具体做法为:

点击:

工具-》选项,找到Classpath选项卡,按下图操作

找到oracle的JDBC,添加进来就好了

然后,点击ireport工具栏上的这个按钮

在弹出的窗口中点new按向导,建一个数据源,注意,这个数据源我们在ireport里设计报表用的,与程序并没有关系

接下来点工具栏上这个

在弹出的窗口中写查询语句,如下图示

点OK后,在ireport左边的面板上Fields下边就有了sql所查出来的列,如图

现在只要把Fields下边的,将来要显示字段拽到报表设计器中上Detail部分,就好了,

注意:

把Field拽到Detail中后,在ColumnHeader会自动出现对应的列头,只要双击,就可以写中文了

接下来从ireport右边的组件面板中找到StaticText控件,拽到Title里,双击就可以输入文字,结果如下

注意:

这里所有的Static和Field,需要在右边的属性面板中,逐一设置两个属性,如图

这是为了将来把报表集成到程序里之后,让其在页面上显示中文

点击

就可以看到结果

一般查询都是有条件的,刚才写的sql是查全部的,现在写带查询条件的sql,具体做法为:

在ireport窗口左边的面板里,找到Parameters右击,添加Parameter,如图

选中刚才添加的这个参数,在右边的属性面板中给其设置名字,比如叫parDname

修改刚才写的sql为这样的

简单说明红色的部分:

在ireport里,用$P{参数名}来取参数,这个参数以后可以从程序里传进来,上边的$P!

{parDname},多了一个!

号,表示,把接来的参数作为字符串拼到sql中,如果去掉!

号,写成$P{parDname},就表示SQL参数,相当于在JDBC中写select*fromdeptwherednamelike?

这样就创建了带条件的查询

3,使用Variable(变量)做简单的汇总

以统计查询结果的总条数,和总人数为例

注:

在scott的dept表里没人部门人数一列,在此用部门编号来代替

在ireport左边找到Variables点右键,添加两个Variable

添加后,在右边的属性面板分别给两个变量起名,varPcount(统计总人数),varRecordCount(统计总记录数)

在属性面板上,对varPcount设置,如图

这几个属性一看就清楚其作用了,Resettype:

Report是对事个报表做统计

在VariableExpression里选择要统计的Field名,如图

在属性面板上,对varRecordCount配置,如图

在Calculation属性中,选择count,表示统计数量

因为是数量,所以,VariableExpression里随便选一列就行

对比:

在没有分组过的sql里selectcount(*)和selectcount(deptno)的结果是一样的

配置好好,将两个Variable从左边拽到报表中对应位置就好了,可参照下图

预览后就可以看到结果了

4,图表的显示,在此,以显示部门人数为例,做一个图表

首先给报表添加一个数据集,操作如图示

起名为dsPcount

按向导完成数据集的创建,之后配置数据集,给数据集添加参数,如图

起名为dsParDname

在创建好的数据集上右键-》EditQuery,添加查询条件

然后在从右边的组件面板中拽一个Chart控件到Summary部分,选择一个样式后,点OK,在接下来的向导中,第一步选择刚创建的数据集,dsPcount,第二步中,选择Key,Value,

分别写两个按钮,选择要显示的键和值

完成后,在生成的图表上右键-》ChartData,在DataSet标签上下边做如下配置

在Parameters标签中这样配置

在Datasetparametersname,选择数据集的参数,在Valueexpression里,选择主报表定义的参数

在Detail标签中,这样配置

这样,显示图表的操作就完成了,预览就可以看到效果了

第四部分,把报表集成到Web应用程序中

用MyEclipse新建一个WebProject,在WebRoot下新建一个reports文件夹,用来放ireport生成的jasper文件

找到前边保存ireport报表的路径,报表在预览后,生成jasper文件,如图

把这个deptReport.jasper文件复制到Web项目里的reports文件夹中

导入JasperReport的包,包可以从以下路径找到

Ireport安装路径\iReport-3.7.6\ireport\modules\ext

把这里所有的包引到Web项目里,引入oracle的jdbc驱动,接下来进行编程,以Servlet为例

1,生成报表并且以HTML形式在网页上显示

Servlet的主要逻辑代码如下:

request.setCharacterEncoding("utf-8");

//接收查询参数,将来这个参数就是我们在报表中定义的parDname

StringdeptName=request.getParameter("dname");

//报表文件路径,我们用ireport做的jasper文件路径

//JasperReport需要jasper文件的真实路径

StringreportPath=request.getSession().getServletContext()

.getRealPath("/reports/deptReport.jasper");

//报表参数,jasper文件可能不只一个参数

//在程序里,用一个Map对象,向jasper文件传递他需要的参数

MapreportParameters=newHashMap();

reportParameters.put("parDname",deptName);

//报表连数据库所用的数据连接

//因为报表直接以数据库为数据源,所以在这里需要给jasper文件一个jdbc连接

Connectioncon=null;

//清空响应流

response.reset();

//设置输出格式

response.setContentType("application/html");

//创建JDBC连接

Class.forName("oracle.jdbc.OracleDriver");

con=DriverManager.getConnection(

"jdbc:

oracle:

thin:

@oracle10:

1521:

oracle","scott","tiger");

//JasperReport提供的类,用于生成一个HTML文件

JasperRunManager.runReportToHtmlFile(reportPath,reportParameters,con);

response.sendRedirect(request.getContextPath()

+"/reports/deptReport.html");

/*

*如果要在网页上显示PDF文件,把前两句去掉,放开这段注释

*ServletOutputStreamout=response.getOutputStream();

*//从jasper报表生成PDF字节

*byte[]pdfBytes=JasperRunManager.runReportToPdf(reportPath,reportParameters,con);

*//设置输出内容长度

*response.setContentLength(pdfBytes.length);//将PDF写入报表

*out.write(pdfBytes,0,pdfBytes.length);

*out.flush();

*out.close();

*/

//关闭数据连接

con.close();

这里只写出逻辑代码,实际用的时候,加上各种异常的处理。

2,导出PDF和Excel文件

Servlet的逻辑代码如下,还是没写异常处理,开发时加上

//接收查询参数

request.setCharacterEncoding("utf-8");

StringdeptName=request.getParameter("dname");

//在请求的时候多加一个参数,标识要生成文件的格式是xls还是pdf

Stringformat=request.getParameter("format");

//报表文件路径

StringreportPath=request.getSession().getServletContext()

.getRealPath("/reports/deptReport.jasper");

//报表参数

MapreportParameters=newHashMap();

reportParameters.put("parDname",deptName);

//报表查数据库的连接

Connectioncon=null;

//清空响应流

response.reset();

//设置输出格式

StringcontentType="pdf";

if("xls".equals(format.toLowerCase())){

contentType="xls";

}

response.setContentType("application/"+contentType);

//设置输出文件名

response.setHeader("Content-Disposition",

"attachment;filename=deptReport."+contentType);

//输出流,用于向浏览器传送pdf文件

ServletOutputStreamout=null;

//创建数据连接

Class.forName("oracle.jdbc.OracleDriver");

con=DriverManager.getConnection(

"jdbc:

oracle:

thin:

@oracle10:

1521:

oracle","scott","tiger");

//取响应流

out=response.getOutputStream();

//创建导出器,JasperReport提供的类

//这里以xls和pdf为例,如果需要生成其他格式的文件,用其他导出器就行

JRAbstractExporterexporter=newJRRtfExporter();

//PDF导出器

if("pdf".equals(format.toLowerCase())){

exporter=newJRPdfExporter();

}elseif("xls".equals(format.toLowerCase())){//excel导出器

exporter=newJRXlsExporter();

exporter.setParameter(

JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,false);

}

//加载报表文件

JasperReportreport=(JasperReport)JRLoader.loadObject(reportPath);

//创建JasperPrint对象

JasperPrintjasperPrint=JasperFillManager.fillReport(report,

reportParameters,con);

//设置要输出的jasper对象

exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);

//设置输出流

exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,out);

//导出

exporter.exportReport();

out.flush();

out.close();

con.close();

到此为止,JasperReport+ireport集成报表到Web程序的一般步骤就说完了,本说明中所提到的报表源文件及Web示例,随文档一起,可以参实际例子来学习Jasper和ireport

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2