iReport+jasperReports使用.docx
- 文档编号:24413857
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:50
- 大小:2.79MB
iReport+jasperReports使用.docx
《iReport+jasperReports使用.docx》由会员分享,可在线阅读,更多相关《iReport+jasperReports使用.docx(50页珍藏版)》请在冰豆网上搜索。
iReport+jasperReports使用
1.readme
为什么需要JasperReports?
JasperReports是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,XML,Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)格式。
该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。
它的主要目的是辅助生成面向页面的(pageoriented),准备付诸打印的文档。
JasperReport借由定义于XML文档中的reportdesign进行数据组织。
这些数据可能来自不同的数据源,包括关系型数据库,collections,java对象数组。
通过实现简单的接口,用户就可以将reportlibrary插入到订制好的数据源中。
为什么需要iReport?
JasperReport借由定义于XML文档中的reportdesign进行数据组织但是繁琐的XML标记和功能API在提供强大的动态及可扩展开发的同时也带来了超高的复杂性,所以我们需要一个图形化可视的IDE来编辑符合jasperReportsAPI的XML文件。
而iReport正是这样一款工具。
我们用iReport可以进行可视化的报表设计。
然而任何事物都不是十全十美的,iReport这一款工具带给我们方便、快捷、直观的同时,也损失了报表设计的灵活性。
但就其实用性而言,所损失的灵活性也就微乎其微了。
2.iReport上手
(1)语言设置,安装好iReport以后,默认语言是繁体中文
由于汉化不完全,为确保词义的一致性.推荐使用英文
选好语言后,点击[应用],更改后的界面如下.
(2)下面是一个较快上手的小例子,如有基础,可以跳过,无须浪费时间
为新建报表起个名字
点击这里,在页面上拖动,可以画一个静态文本域.
点击运行(不连接数据库)
运行效果
(3)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)为了使报表更美观,将报表做简单修饰
设置好以后点击[Apply],使应用生效。
(5)其他区哉如法炮制,最后留下detail区域,通过鼠标拖曳标记为红线的边框线,以适应文本区域的高度
(6)对齐按钮使用
为了确保精确度,选择所有文本框,点击这个按钮,将文本框的纵向填满detail区域.
(7)添加列名及标题
点击静态文本域按钮,在需要的显示域中通过拖曳即可画出文本框
(8)预览
一切调整合适后,点击这个按钮,进行连接数据库的预览
预览效果
(9)选择预览格式(html,xls,pdf)
iReport默认使用JRViewer展示预览效果,我们还可以使用html,xls,pdf及其他形式显示预览效果
选择好以后点击[应用],然后[保存]
再次点击这个预览按钮
5.iReport图形报表的绘制
(1)新建报表,调整各显示区域的高度
(2)添加图形控件
选择这个柱形图表,点击[OK]
(3)添加SQL文
添好后点击[OK]
此时,Fields会有所检出的字段
(4)为柱形图表捆绑数据
点击[添加]
点击这个按钮,选择值
选好数值以后,点击[OK]
选好各值以后,界面如下
(5)调整图表到适当大小
点击预览
(6)执行结果
6.JasperReportsAPI导出HTML报表
(1)绘制模板,并且编译成.jasper文件
(2)将编译好的.jasper文件考备到WEB工程下
(3)界面上通过一个超级链接,跳转到后台
(4)STRUTS2的配置文件
(5)后台方法
由于匆忙,代码未加格式化,为了清晰可考备到文本中查看
publicvoidtestReport1(){
//加载.jasper文件
FilejasperRile=newFile(ServletActionContext.getServletContext().getRealPath("/jasper/TestReport1.jasper"));
try{
//构造JasperReport文件
JasperReportjasperReport=(JasperReport)JRLoader.loadObject(jasperRile.getPath());
//用数据填充JasperReport文件
JasperPrintjasperPrint=JasperFillManager.fillReport(jasperReport,null,getSimpleDao().getHibernateSession().connection());
//声明HTML类型的导出类
JRHtmlExporterexporter=newJRHtmlExporter();
//设置导出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(Exceptione){
e.printStackTrace();
}
}
(6)预览结果
7.JasperReportsAPI导出EXCEL报表
(1)绘制模板,并且编译成.jasper文件
(2)将编译好的.jasper文件考备到WEB工程下
(3)界面上通过一个超级链接,跳转到后台
(4)STRUTS2的配置文件
(5)后台方法
由于匆忙,代码未加格式化,为了清晰可考备到文本中查看
publicvoidtestReport1(){
//加载.jasper文件
FilejasperRile=newFile(ServletActionContext.getServletContext().getRealPath("/jasper/TestReport1.jasper"));
try{
//构造JasperReport文件
JasperReportjasperReport=(JasperReport)JRLoader.loadObject(jasperRile.getPath());
//用数据填充JasperReport文件
JasperPrintjasperPrint=JasperFillManager.fillReport(jasperReport,null,getSimpleDao().getHibernateSession().connection());
//声明导出对像
JRXlsExporterexporter=newJRXlsExporter();
//设置导出哪个模板
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(Exceptione){
e.printStackTrace();
}
}
(6)执行结果
打开EXCEL,查看导出结果
8.JasperReportsAPI导出PDF报表
(1)绘制模板,并且编译成.jasper文件
(2)将编译好的.jasper文件考备到WEB工程下
(3)界面上通过一个超级链接,跳转到后台
(4)STRUTS2的配置文件
(5)后台方法
由于匆忙,代码未加格式化,为了清晰可考备到文本中查看
publicvoidtestReport1(){
//加载.jasper文件
FilejasperRile=newFile(ServletActionContext.getServletContext().getRealPath("/jasper/TestReport1.jasper"));
try{
//构造JasperReport文件
JasperReportjasperReport=(JasperReport)JRLoader.loadObject(jasperRile.getPath());
//用数据填充JasperReport文件
JasperPrintjasperPrint=JasperFillManager.fillReport(jasperReport,null,getSimpleDao().getHibernateSession().connection());
//pdf导出设置
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
//使用JRPdfExproter导出器导出pdf
JRPdfExporterexporter=newJRPdfExporter();
//设置JasperPrintList
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT,jasperPrint);
//设置导出流
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,response.getOutputStream());
//开始导出
exporter.exportReport();
}catch(Exceptione){
e.printStackTrace();
}
}
(6)执行结果
9.JasperReportsAPI导出子报表
(1)为了直观一些,我们先来看子报表导出的结果
子报表subReport_3_right.jasper
(2)报表绘制
这里面需要画三张报表,其中两个子报表,一个父报表.详细如下:
A.绘制子报表subReport_3_right.jrxml
1先画出报表的静态部分
2添加Fields,和Parameters
选择类型
添加年月和井口产液量的字段,其中年月是String类型,井口产液量是bigDecimal类型.
3添加参数
注意类型
B.绘制子报表subReport_3_left.jrxml
详细操作参照A,界面如下
C.绘制主报表subReport_3_main.jrxml
这个就是父报表了,我们通过这个父报表来调用A和B当中制做的两张子报表.
1先画出静态部分,如下图
2添加子报表
这里我们选择使用已经存的子报表
选择子报表
3之后一路点击[next],直到[finish],并且使用同样的方法将subReport_3_Right.jrxml添加到父报表中
4添加参数
参数:
DatasourceForLeftSubreport
类型:
net.sf.jasperreports.engine.JRDataSource
作为数据源提供给子报表subReport_3_left.jasper
参数:
DatasourceForRightSubreport
类型:
net.sf.jasperreports.engine.JRDataSource
作为数据源提供给子报表subReport_3_right.jasper
5为子报表配置数据源
选择刚才创建的两个数据源参数
把数据源作为参数传递给子报表,注意,子报表中要有一个名字为dataSource的参数接收数据源.
6左边子表的数据源设置好以后,再设置右边子表的数据源
鼠标右键,选择属性
(3)将三张报表编译好的jasper文件放到工程内
(4)界面链接
(5)STRUTS2配置文件
(6)后台处理方法
publicvoidsubreportTransDatasource(){
//声明指向父报表subReport_3_main绝对路径的字符串
StringjasperFile=ServletActionContext.getServletContext().getRealPath("/jasper/subReport_3_main.jasper");
//声明指向报表根目录的字符串,主报表需要通过这个路径找到子报表
StringjasperRoot=ServletActionContext.getServletContext().getRealPath("/jasper")+"\\";
//声明向父报表传递参数的map
Map
try{
//构造JasperReport文件
JasperReportjasperReport=(JasperReport)JRLoader.loadObject(jasperFile);
//leftsubreport
//检索子报表subReport_3_left.jasper的数据源
StringstrSql="selectny,count(jkcyl)ASjkcylfromkfsjwherenyLIKE'2007%'GROUPBYny";
ListlistIncludeObjects=getSimpleDao().findBySQL(strSql);
ListlistIncludeBeans=reconstructList_chartTest(listIncludeObjects);
JRBeanCollectionDataSourcedatasource=newJRBeanCollectionDataSource(listIncludeBeans);
//设置子报表所在的路径
parameterMap.put("SUBREPORT_DIR",jasperRoot);
//设置DatasourceForLeftSubreport参数,这个参数将作为子报表的数据源被传递
parameterMap.put("DatasourceForLeftSubreport",datasource);
//rightsubreport
//检索子报表subReport_3_right.jasper的数据源
strSql="selectny,count(jkcyl)ASjkcylfromkfsjwherenyLIKE'2008%'GROUPBYny";
listIncludeObjects=getSimpleDao().findBySQL(strSql);
listIncludeBeans=reconstructList_chartTest(listIncludeObjects);
JRBeanCollectionDataSourcedatasourceForRight=newJRBeanCollectionDataSource(listIncludeBeans);
//设置DatasourceForLeftSubreport参数,这个参数将作为子报表的数据源被传递
parameterMap.put("DatasourceForRightSubreport",datasourceForRight);
//用数据填充JasperReport文件
JasperPrintjasperPrint=JasperFillManager.fillReport(jasperReport,parameterMap);
//声明HTML类型的导出类
JRHtmlExporterexporter=newJRHtmlExporter();
//设置导出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(Exceptione){
e.printStackTrace();
}
}
(7)执行效果
10.JasperRepor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iReport jasperReports 使用
![提示](https://static.bdocx.com/images/bang_tan.gif)