JasperReport简介

JasperReport:java提供的一个类库,承上启下,读取IReport生成的xxx.jrxml文件,获取到pdf中需要显示的全部内容,然后底层调用IText相关的方法,生成一个具体的PDF文档

IReport:  图形化报表开发工具(java swing编写的一个可视化工具) --->xxx.jrxml

IText:java提供的一套用于生成PDF文档的类库编写的代码.

报表技术之PDF格式报表生成 (JasperResport)

1.JasperReport

IText PDF 类库 , 编程非常复杂 ,运维成本非常高



2.IReport 图形化报表开发工具 下载安装

 
下载网址:

http://community.jaspersoft.com/project/ireport-designer/releases

注意:可能需要jdk1.7才能打开 
3.IReport 报表模板简介和设置中文生成 
3.1. 新建 JasperReport 模板文件 .jrxml 
 

3.2.设置中文, IReport 引入 ITextAsian.jar 中文包

 

 
 
3.3.了解报表模板结构 
Title: 报表标题 
PageHeader: 页眉 
ColumnHeader: 表格列标题 
Detail: 表格数据内容 
ColumnFooter: 表格页脚 
PageFooter: 页脚 
Summary: 摘要

3.4.常用报表组件 
 
StaticText: 静态文本 
TextField : 显示动态文本

3.5 设置预览格式为 PDF 
 
4.IReport 配置数据库连接,基于数据表生成报表 
 
4.1.点击按钮配置数据库连接 
新建JDBC连接 

 
4.2 在 ireport 添加 oracle 的 jdbc 驱动 
 
4.3 通过 ReportQuery 查询数据库 ,最后点击ok
 
 
4.4.设计报表 

5.JasperResport 根据模板文件 生成报表 
5.1. 设置 ireport 字段 自动换行 
 

5.2将桌面(文件路径)的waybill.jrxml文件复制到项目中 
 
5.3在页面添加按钮,并绑定点击事件,提交表单 
 
5.4在maven项目的父模块添加jasperReport依赖 
 
5.5 在 ReportAction 添加 exportJasperPdf 方法 
 
 
问题:当项目的功能够多时,可能会出现jar包冲突(当导入本次是jackson包冲突) 
Caused by: java.lang.ClassNotFoundException: 
com.fasterxml.jackson.annotation.ObjectIdResolver 
在pom的坐标中引入 

5.6.从数据导入只能显示与数据库匹配,但是如果要想导出我查询后的结果,重新设计ireport报表:

根据java 符合实体类中的对象生成数据源.

重新添加实体类的对象,删除原来的数据

  

重新在项目加入jrxml文件.

修改 ReportAction 代码 
 
 
异常:

Caused by: QueryPhaseExecutionException[Result window is too large, from + size must be less than or equal to: [10000] but was [2147483647]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.]

修复 WayBillServiceImpl 查询数据代码:

Action代码

@Action("report_exportJasperPdf")
public String exportJasperPdf() throws IOException, DocumentException,
JRException, SQLException {
// 查询出 满足当前条件 结果数据
List<WayBill> wayBills = wayBillService.findWayBills(model); // 下载导出
// 设置头信息
ServletActionContext.getResponse().setContentType("application/pdf");
String filename = "运单数据.pdf";
//客户端浏览器
String agent = ServletActionContext.getRequest()
.getHeader("user-agent");
filename = FileUtils.encodeDownloadFilename(filename, agent);
ServletActionContext.getResponse().setHeader("Content-Disposition",
"attachment;filename=" + filename); // 根据 jasperReport模板 生成pdf
// 读取模板文件
String jrxml = ServletActionContext.getServletContext().getRealPath(
"/WEB-INF/jasper/waybill.jrxml");
JasperReport report = JasperCompileManager.compileReport(jrxml); // 设置模板数据
// Parameter变量,
Map<String, Object> paramerters = new HashMap<String, Object>();
paramerters.put("company", "陕西朗朗");
// Field变量
JasperPrint jasperPrint = JasperFillManager.fillReport(report,
paramerters, new JRBeanCollectionDataSource(wayBills));
System.out.println(wayBills);
// 生成PDF客户端
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
ServletActionContext.getResponse().getOutputStream());
exporter.exportReport();// 导出
ServletActionContext.getResponse().getOutputStream().close(); return NONE;
}

报表技术之PDF格式报表生成 ----JasperResport的更多相关文章

  1. 报表开发导出各种格式文件的API

    文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要.报表的输入是指从报表的模板文件(XML格式的)创建WorkBook对象,输出则指将报表保存为各种格式文件,比如Pdf.Excel.Wo ...

  2. JAVA将Excel中的报表导出为图片格式(一)问题背景

    如题所示,先抛出一个问题,如何使用JAVA将Excel中的报表导出为图片格式? 首先说一下这个问题的背景,也就是为什么博主会碰到这个问题 随着微信,易信之流大行其道,企业内部的办公交流.绩效考评甚至考 ...

  3. 【强大的PDF格式转换工具】Lighten PDF Converter OCR for Mac 6.2.0

    [简介] Lighten PDF Converter OCR 是一款Mac上强大的PDF格式转换工具,可以将PDF文档快速批量的转换为Office (Word, Excel, PowerPoint), ...

  4. 《模式分类(原书第二版)》pdf格式下载电子书免费下载

    <模式分类(原书第二版)>pdf格式下载电子书免费下载: https://u253469.ctfile.com/fs/253469-302448505 内容简介 <模式分类>( ...

  5. html/jsp导出pdf格式的几种方法(jsPDF,iText,wkhtmltopdf)

    在许多生成报表的时候需要我们后台作出动态的数据,并渲染到前端生成pdf格式,Excel格式的各种报表,但是浏览器自带的生成pdf功能,windows系统的ctrl+p键就能完全搞定这一需求,但对客户来 ...

  6. 程序员需要的各种PDF格式电子书【附网盘免费下载资源地址】

    程序员需要的各种PDF格式电子书[附网盘免费下载资源地址]   各位,请妥善保存,后期还会有更多更新,如果你有不同的书籍资源或者这里没有你要找的书籍,也可以直接留言,后期我们会继续更新~ Java & ...

  7. 关于devexpress报表XtraReport,动态修改报表样式(.repx格式),动态添加数据并使用的理解

    一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控 ...

  8. 【HOW】如何限制Reporting Services报表导出功能中格式选项

    Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...

  9. Magento订单打印(pdf格式)

    Magento自身包含有:打印发票单,打印装箱单,打印退款单.这些都是基于西方国家的习惯来布置的.公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成.刚接到这个任务时,觉得头大,因为对于PH ...

随机推荐

  1. 队列同步器AbstractQueuedSynchronizer

    AQS是用来构建锁或者其它同步组件的基础框架,它使用一个int变量来表示同步状态,通过内置的FIFO队列来完成获取线程的排队工作,concurrent包的作者Doug Lea期望它能称为实现大部分同步 ...

  2. org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.

    今天报了这个异常,这是页面报的 org.springframework.dao.DataIntegrityViolationException: could not execute statement ...

  3. TOJ 2815 Connect them (kruskal+并查集)

    描述 You have n computers numbered from 1 to n and you want to connect them to make a small local area ...

  4. Linux查找命令与find命令详解

    一.文件查找之locate命令 locate :非实时的,查找时根据全系统文件数据库进行的,模糊查找,update 手动生成文件数据库速度快 依赖于updatedb数据库 1 2 3 4 5 6 7 ...

  5. 错误 6 未能找到类型或命名空间名称“BLL”(是否缺少 using 指令或程序集引用?)

    出现这个错误,要确保先引用BLL.dll, 如果引用之后还没有解决这个问题的话,确认一下程序集FrameWork版本与项目FrameWork版本一致.右击程序集属性可以更改.

  6. Oracle中scott用户下基本表练习SQL语句

    --选择部门中30的雇员SELECT * from emp where DEPTNO=30;--列出所有办事员的姓名.部门.编号--采用内连接方式,也就是等值链接,也是最常用的链接SELECT ena ...

  7. chosen下拉框插件的使用

    效果如下 第一步: 第二步: 根据HTML5规范, 通常在引入CSS和JS时不需要指明 type,因为 text/css 和 text/javascript 分别是他们的默认值. <link r ...

  8. Word中划线的方法(五种)

    Word中划线的方法(五种): 1. 按CTRL+F9,在出现的黑底花括号内,如图输入内容, 最后按SHIFT+F9(或者右键菜单点切换域代码),以后可以反复按ALT+F9在代码与结果之间切换. 注: ...

  9. freebsd mount linprocfs

    mount用来做什么? to prepare and graft a special device or the remote node(rhost:path) on to the file syst ...

  10. Oracle 数据库异机恢复(归档模式)

    操作必须在服务器上进行(在192.168.12.71上执行) 0.按需要恢复的日期,把距恢复日期最近的全部备份和全部备份日期后的日志备份一同拷贝到需要恢复的机器上: 1.用RMAN登陆 C:\User ...