ireport制作jasperreport报表详细过程.docx

上传人:b****4 文档编号:6087025 上传时间:2023-05-09 格式:DOCX 页数:17 大小:540.48KB
下载 相关 举报
ireport制作jasperreport报表详细过程.docx_第1页
第1页 / 共17页
ireport制作jasperreport报表详细过程.docx_第2页
第2页 / 共17页
ireport制作jasperreport报表详细过程.docx_第3页
第3页 / 共17页
ireport制作jasperreport报表详细过程.docx_第4页
第4页 / 共17页
ireport制作jasperreport报表详细过程.docx_第5页
第5页 / 共17页
ireport制作jasperreport报表详细过程.docx_第6页
第6页 / 共17页
ireport制作jasperreport报表详细过程.docx_第7页
第7页 / 共17页
ireport制作jasperreport报表详细过程.docx_第8页
第8页 / 共17页
ireport制作jasperreport报表详细过程.docx_第9页
第9页 / 共17页
ireport制作jasperreport报表详细过程.docx_第10页
第10页 / 共17页
ireport制作jasperreport报表详细过程.docx_第11页
第11页 / 共17页
ireport制作jasperreport报表详细过程.docx_第12页
第12页 / 共17页
ireport制作jasperreport报表详细过程.docx_第13页
第13页 / 共17页
ireport制作jasperreport报表详细过程.docx_第14页
第14页 / 共17页
ireport制作jasperreport报表详细过程.docx_第15页
第15页 / 共17页
ireport制作jasperreport报表详细过程.docx_第16页
第16页 / 共17页
ireport制作jasperreport报表详细过程.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ireport制作jasperreport报表详细过程.docx

《ireport制作jasperreport报表详细过程.docx》由会员分享,可在线阅读,更多相关《ireport制作jasperreport报表详细过程.docx(17页珍藏版)》请在冰点文库上搜索。

ireport制作jasperreport报表详细过程.docx

ireport制作jasperreport报表详细过程

ireport制作jasperreport报表详细过程(包括jsp端代码实现)

概述:

现在简要的介绍Jasperreport是

如何工作的,这样你可以更好的理解iReport是如何帮助Jasperreport实现前端的

工作,其实这些工作在我们看来就是“脏活”,为什么呢?

看看下面的资料就知

道了:

首先是要有一个XML

文件(一般是以jrxml后缀),那么这个XML文件从那里来呢?

做什么用呢?

个XML文件就是报表的定义文件,整个报表的每一个细节都在这个XML文件

之中定义,一个简单报表的xml文件就有几百行,你可以手工编辑这个XML文

件(一行一行,一段一段的编辑吧――这就是所谓的“脏活”),然后可以在jsp后台使用JasperCompileManager将xml文件编译为jasper文件

ireport工具就是简化编写xml文件和编译的这个流程,而且提供可视化编辑窗口,非常方便

ireport部分:

我使用的是ireport3.0和现在最新的4.0界面上有很大的不同:

3.0界面:

这里,我假设ireport的环境已经配置完毕,点击左上角的档案,选择开启新档,设置报表初始化参数:

注意一下里边的字段数的按钮,字段数设置默认为1,如果设置为2的话,就相当于每一列会有2个字段排列,这样讲有点抽象,请看下边的例子:

假设我们的数据表是这样:

name

sex

realname

remark

a_1

b_1

c_1

d_1

a_2

b_2

c_2

d_2

a_3

b_3

c_3

d_3

a_4

b_4

c_4

d_4

如果ireport的字段数设为2,结果会变成:

name

sex

realname

remark

a_1a_2

b_1b_2

c_1c_2

d_1d_2

a_3a_4

b_3b_4

c_3c_4

d_3d_4

所以,一般设置字段数为1即可。

新建后,可以看到中间的控制面板:

这里,假设您只需要报表显示表格和统计数据,所以title和lastpagefooter可以不要,在左上角的预览里,选择栏,把title和lastpagefooter高度设为0.

下面开始设计报表:

然后可以拖拉到控制面板对应字段对齐

这里假设各位都会对其,效果图如下:

使用报表变量,计算统计值:

document下右键添加variable,出现这个界面,然后按照这样设置:

这里我是统计列a的个行相加值,因为前面image已经设置了sum,所以,报表会自动计算列a的相加值。

这里设计报表要注意几点:

1.字段间要对齐,方框为红色的,表明是超出报表边界

2.写表达式的时候,与java类型兼容,但是写法有点不同,类型转换要用new类型不然会报错

jsp处理报表部分

设置report环境:

1.每个Web应用都会有WEB-INF目录,但是lib是不一定有的,如果没有就创

建它,本文需要的jar库文件有3个:

jasperreports-0.5.3.jar:

jasperreports执行时需要的API

iTextAsian.jar:

亚洲字符集支持

itext-1.02b.jar:

其他字符集支持

2.在Web应用中根目录下创建repotrs目录,其实这是一种建议,没有必要完

全按照这样做,你可以根据你的业务需要创建N个目录或是层次目录。

把.jasper文件拷贝到repotrs目录下,比如例子中的BusinessRpt.jasper

文件。

jsp两种模式:

1.直接使用jsp处理报表

2.使用servlet处理报表

1.使用jsp处理报表:

jsp文件:

viewsourceprint?

01<%@pagesession="false"%>

02<%@pageimport="dori.jasper.engine.*"%>

03<%@pageimport="javax.naming.*"%>

04<%@pageimport="java.sql.*"%>

05<%@pageimport="javax.sql.*"%>

06<%@pageimport="java.util.*"%>

07<%@pageimport="java.io.*"%>

08

09

10

11

12<%

13DataSourceds=null;

14try{

15InitialContextctx=newInitialContext();

16ds=(DataSource)ctx.lookup("java:

comp/env/jdbc/mysql");

17Connectionconn=ds.getConnection();

18//装载jasper文件

19Filebusiness_rpt=new

20File(application.getRealPath("/reports/BusinessRpt.jasper"));

21//

22//ProjectName就是iReport的变量$P{ProjectName}的名称,

23//proname就是从界面上获取的值。

24Mapparameters=newHashMap();

25parameters.put("ProjectName",proname);

26//JasperRunManager是一个输出控制管理类,下文会提及部分内容

27JasperRunManager.runReportToHtmlFile(business_rpt.getPath(),parameters,conn);

28//如果创建报表成功,则转向该报表,其实可以把报表套在框架内,这样实现比较有意

29义的报表格式。

30response.sendRedirect("/reports/BusinessRpt.html");

31}catch(Exceptionex){

32out.print("出现例外,信息是:

"+ex.getMessage());

33ex.printStackTrace();

34}

35%>

36

37

38

39

2.使用servlet处理报表:

主要区别就是,servlet是直接输出report报表流:

先写一个CustomDataSource类实现report的JRDataSource接口,转化vector向量为数据源:

viewsourceprint?

01publicclassCustomDataSourceimplementsJRDataSource

02{

03privateVectordataVector=newVector();

04privateintindex=-1;

05

06publicCustomDataSource(VectorDataVector)

07{

08dataVector=DataVector;

09}

10

11publicbooleannext()throwsJRException

12{

13index++;

14return(index

15}

16

17publicObjectgetFieldValue(JRFieldfield)throwsJRException

18{

19Objectvalue=null;

20StringfieldName=field.getName();

21

22value=((Map)dataVector.get(index)).get(fieldName);

23returnvalue;

24}

25

26

27}

输出html:

viewsourceprint?

01ServletContextcontext=this.getServletConfig().getServletContext();

02FilereportFile=newFile(context

03.getRealPath("/reports/test.jasper"));//加载报表路径

04if(!

reportFile.exists()){

05response.setContentType(CONTENT_TYPE);

06PrintWriterout=response.getWriter();

07out.print("");

08out.print("alert('找不到报表!

');");

09out.print("");

10return;

11}

12

13Mapparameters=newHashMap();

14

15

16

17response.setContentType(CONTENT_TYPE);

18PrintWriterout=response.getWriter();

19try{

20

21JasperReportjasperReport=(JasperReport)JRLoader

22.loadObject(reportFile.getPath());//加载报表

23

24/*

25java.lang.reflect.FieldpageHeight=JRBaseReport.class.getDeclaredField("pageHeight");

26pageHeight.setAccessible(true);

27pageHeight.setInt(jasperReport,500);

28*/

29

30

31JasperPrintjasperPrint=JasperFillManager

32.fillReport(jasperReport,parameters,

33newCustomDataSource((Vector)re

34.get

(1)));//加载数据源和parameters,这里的数据源用到的是JRDataSource,所以要实现JRDataSource接口

35

36JRHtmlExporterexporter=newJRHtmlExporter();

37

38MapimagesMap=newHashMap();

39request.getSession().setAttribute("IMAGES_MAP",

40imagesMap);

41

42Stringheader="";

43header="/n";

44header+="window.history.forward

(1);/n";

45header+="document.onkeydown=function(){if(event.keyCode==8){if((document.activeElement.type!

='text')&&(document.activeElement.type!

='textarea')){event.keyCode=0}};}/n";

46header+="document.oncontextmenu=function(){returnfalse;};/n";

47header+="/n";

48

49header+="/n";

50header+="/n";

51header+="/n";

52header+="/n";

53header+="a{text-decoration:

none}/n";

54header+="/n";

55header+="/n";

56header+="/n";

57header+="/n";

58header+=" /n";

59header+="/n";

60

61exporter.setParameter(

62JRExporterParameter.JASPER_PRINT,

63jasperPrint);

64exporter.setParameter(

65JRExporterParameter.OUTPUT_WRITER,out);

66exporter.setParameter(

67JRHtmlExporterParameter.IMAGES_MAP,

68imagesMap);

69exporter.setParameter(

70JRHtmlExporterParameter.IMAGES_URI,

71"/Images/");

72exporter

73.setParameter(

74JRHtmlExporterParameter.HTML_HEADER,

75header);

76

77exporter.exportReport();

viewsourceprint?

1pdf输出:

viewsourceprint?

01byte[]bytes=null;

02

03try{

04bytes=JasperRunManager.runReportToPdf(reportFile

05.getPath(),parameters,

06newCustomDataSource((Vector)re.get

(1)));

07if(bytes!

=null&&bytes.length>0){

08response.setContentType("application/pdf");

09response.setContentLength(bytes.length);

10ServletOutputStreamouputStream=response

11.getOutputStream();

12ouputStream.write(bytes,0,bytes.length);

13ouputStream.flush();

14ouputStream.close();

15}

16

17}catch(Exceptione){

18e.printStackTrace();

19System.out.println("ErrorTime:

"+newDate());

20response.setContentType(CONTENT_TYPE);

21PrintWriterout=response.getWriter();

22out.print("");

23out.print("alert('"

24+e.toString().replace("'","")+"');");

25out.print("");

26

27}

viewsourceprint?

1excel输出:

viewsourceprint?

01try{

02

03JasperReportjasperReport=(JasperReport)JRLoader

04.loadObject(reportFile.getPath());

05

06

07ServletOutputStreamouputStream=response

08.getOutputStream();

09

10JasperPrintjasperPrint=JasperFillManager

11.fillReport(jasperReport,parameters,

12newCustomDataSource((Vector)re

13.get

(1)));

14

15response.setContentType("application/ms-excel");

16response.setHeader("Content-Disposition",

17"inline;filename=/""

18+jasperPrint.getName()+".XLS/"");

19

20JRXlsExporterexporter=newJRXlsExporter();

21

22exporter.setParameter(

23JRExporterParameter.JASPER_PRINT,

24jasperPrint);

25exporter.setParameter(

26JRExporterParameter.OUTPUT_STREAM,

27ouputStream);

28exporter

29.setParameter(

30JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,

31Boolean.TRUE);

32exporter

33.setParameter(

34JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,

35Boolean.FALSE);

36exporter

37.setParameter(

38JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,

39Boolean.FALSE);

40exporter.exportReport();

41

42}

43

44catch(Exceptione){

45e.printStackTrace();

46System.out.println("ErrorTime:

"+newDate());

47

48response.setContentType(CONTENT_TYPE);

49PrintWriterout=response.getWriter();

50out.print("");

51out.print("alert('"

52+e.toString().replace("'","")+"');");

53out.print("");

54

55

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

当前位置:首页 > 工程科技 > 电子电路

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

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