java web jasperreport+ireport 实现多记录自动分页打印

本文介绍了一个Java Web应用程序中如何利用JasperReport和iReport实现多记录的自动分页打印。通过创建printByJasperDemo.jsp页面,展示了如何加载jasper报告文件,设置参数,建立数据库连接,填充报告,以及使用JRHtmlExporter进行HTML导出,并利用CSS样式实现打印时的分页效果。

创建一个printByJasperDemo.jsp,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page
import="java.io.*,net.sf.jasperreports.engine.*,net.sf.jasperreports.engine.util.*,java.util.*,java.sql.*,net.sf.jasperreports.engine.export.*"%>
<script type="text/javascript">
function printView() {
window.print();
}
</script>
<!-- 实现打印的关键样式,Noprint:使用该样式的元素在打印时会被忽略;PageNext:浏览器打印接口能够识别的分页标记,碰到有该样式的元素,浏览器打印接口就知道要换一页了 -->
<style media="print" type="text/css">
.Noprint {
display: none;
}
.PageNext {
page-break-after: always;
}
</style>
<button onclick="printView()" class="Noprint">打印预览</button>
<%
File reportFile = new File(
application.getRealPath("jasper/elecPayPrint.jasper"));
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFile.getPath());
//Map里面可以封装jasper中用到的参数
Map parameters = new HashMap();
parameters.put("make_code", "D_20140116_0053");
parameters.put("make_date", "2012-12-12");
parameters.put("make_man", "雷宏");
parameters.put("area_name", "长沙");


//数据库连接
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@10.46.1.117:1521:property", "hnproperty", "property123");


JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameters, conn);


JRHtmlExporter exporter = new JRHtmlExporter();


exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);//待export的japserPrint
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);//输出writer
exporter.setParameter(
JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,//去掉图片填充
Boolean.FALSE);
//打印分页的关键代码,结合了上面的样式
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML,
"<div class='PageNext'></div>");
 
exporter.setParameter(
JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);

exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT,
JRHtmlExporterParameter.SIZE_UNIT_POINT);
exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT,
JRHtmlExporterParameter.SIZE_UNIT_PIXEL); 

exporter.exportReport();


out.flush();
conn.close();
%>

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值