ireport制作jasperreport报表详细过程Word文档格式.docx
- 文档编号:7863677
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:17
- 大小:540.48KB
ireport制作jasperreport报表详细过程Word文档格式.docx
《ireport制作jasperreport报表详细过程Word文档格式.docx》由会员分享,可在线阅读,更多相关《ireport制作jasperreport报表详细过程Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
d_4
如果ireport的字段数设为2,结果会变成:
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<
javax.naming.*"
%>
04<
java.sql.*"
05<
javax.sql.*"
06<
java.util.*"
07<
java.io.*"
08<
html>
09<
head>
10<
metahttp-equiv="
Content-Type"
content="
text/html;
charset=gb2312"
>
11<
title>
<
/title>
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<
/head>
37<
body>
38<
/body>
39<
/html>
2.使用servlet处理报表:
主要区别就是,servlet是直接输出report报表流:
先写一个CustomDataSource类实现report的JRDataSource接口,转化vector向量为数据源:
01publicclassCustomDataSourceimplementsJRDataSource
02{
03privateVectordataVector=newVector();
04privateintindex=-1;
05
06publicCustomDataSource(VectorDataVector)
07{
08dataVector=DataVector;
09}
10
11publicbooleannext()throwsJRException
12{
13index++;
14return(index<
dataVector.size());
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:
01ServletContextcontext=this.getServletConfig().getServletContext();
02FilereportFile=newFile(context
03.getRealPath("
/reports/test.jasper"
//加载报表路径
04if(!
reportFile.exists()){
05response.setContentType(CONTENT_TYPE);
06PrintWriterout=response.getWriter();
07out.print("
scriptlanguage='
javascript'
08out.print("
alert('
找不到报表!
'
09out.print("
/script>
10return;
11}
12
13Mapparameters=newHashMap();
14
15
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);
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;
};
47header+="
48
49header+="
50header+="
51header+="
<
metahttp-equiv=/"
Content-Type/"
content=/"
charset=GBK/"
52header+="
styletype=/"
text/css/"
53header+="
a{text-decoration:
none}/n"
54header+="
/style>
55header+="
56header+="
bodytext=/"
#000000/"
link=/"
alink=/"
vlink=/"
57header+="
tablewidth=/"
100%/"
cellpadding=/"
0/"
cellspacing=/"
border=/"
58header+="
tr>
tdwidth=/"
50%/"
nbsp;
/td>
tdalign=/"
center/"
59header+="
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();
1pdf输出:
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();
17}catch(Exceptione){
18e.printStackTrace();
19System.out.println("
ErrorTime:
+newDate());
20response.setContentType(CONTENT_TYPE);
21PrintWriterout=response.getWriter();
22out.print("
23out.print("
24+e.toString().replace("
"
"
)+"
25out.print("
1excel输出:
01try{
03JasperReportjasperReport=(JasperReport)JRLoader
04.loadObject(reportFile.getPath());
06
07ServletOutputStreamouputStream=response
08.getOutputStream();
09
10JasperPrintjasperPrint=JasperFillManager
11.fillReport(jasperReport,parameters,
12newCustomDataSource((Vector)re
13.get
(1)));
15response.setContentType("
application/ms-excel"
16response.setHeader("
Content-Disposition"
17"
inline;
filename=/"
18+jasperPrint.getName()+"
.XLS/"
19
20JRXlsExporterexporter=newJRXlsExporter();
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();
42}
43
44catch(Exceptione){
45e.printStackTrace();
46System.out.println("
47
48response.setContentType(CONTENT_TYPE);
49PrintWriterout=response.getWriter();
50out.print("
51out.print("
52+e.toString().replace("
53out.print("
54
55
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ireport 制作 jasperreport 报表 详细 过程