一、 生成pdf
<%@ page contentType="application/pdf;charset=UTF-8"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager" %>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page import="com.demo.customer.domain.Purchasepo"%>
<%@ page language="java" import="com.demo.customer.domain.Exportso,javax.sql.DataSource,customer.ConnectionFactory" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
String bg_no = (String) request.getSession().getAttribute("report_no");//点击预览按钮时将合同号作为参数传入报表
String rowid =bg_no;//初始化变量
System.out.println(bg_no);
String rowid2 = basePath+"/pic/softexlogo.jpg";//初始化变量
String rowid3 = basePath+"/pic/gz.jpg";//初始化变量
//报表编译之后生成的.jasper文件的存放位置
File reportFile = new
//报表编译之后生成的.jasper文件的存放位置
File(this.getServletContext().getRealPath("/report/report_dzmxd.jasper"));
//String url="jdbc:sqlserver://192.168.1.84:1433;databaseName=p_test";//单独链接数据库,已弃用
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//单独链接数据库,已弃用
Map parameters = new HashMap();
parameters.put("bg_no", rowid);
parameters.put("logo", rowid2);
parameters.put("gz", rowid3);
//Connection conn = DriverManager.getConnection(url, "sa","123456");//单独链接数据库,已弃用
System.out.println("---------conn pdf-------------");
DataSource dataSource =ConnectionFactory.getDataSource();//调用连接池
Connection connection=dataSource.getConnection();//调用连接池
System.out.println("---------Jasper begin pdf-------------");
byte[]
bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,connection);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outStream = response.getOutputStream();
outStream.write(bytes,0,bytes.length);
outStream.flush();
outStream.close();
out.clear();
out = pageContext.pushBody();
connection.close();
reportFile = null;
System.out.println("---------Jasper end pdf-------------");
%>
二、 生成excel
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page
import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%@page import="com.demo.customer.domain.Purchasepo"%>
<!-- 调用连接池 -->
<%@ page language="java"
import="com.demo.customer.domain.Exportso,javax.sql.DataSource,customer.ConnectionFactory"%>
<!-- 动态获取项目路径 -->
<%
String path = request.getContextPath()
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/"
%>
<%
String bg_no = (String) request.getSession().getAttribute("report_no")
String rowid = bg_no
System.out.println(bg_no)
String rowid2 = basePath + "/pic/softexlogo.jpg"
String rowid3 = basePath + "/pic/gz.jpg"
//报表编译之后生成的.jasper 文件的存放位置
File reportFile = new File(application.getRealPath("/report/report_dzmxd.jasper"))
//这个是用来联接我的SQL Server 的JDBC URL
//String url="jdbc:sqlserver://192.168.1.84:1433;databaseName=p_test"
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
//传递报表中用到的参数值
Map parameters = new HashMap()
parameters.put("bg_no", rowid)
parameters.put("logo", rowid2)
parameters.put("gz", rowid3)
//连接到数据库
//Connection conn = DriverManager.getConnection(url,"sa", "123456")
//在控制台显示一下报表文件的物理路径
System.out.println(reportFile.getPath())
try {
// fill
System.out.println("---------conn-------------")
DataSource dataSource = ConnectionFactory.getDataSource()
Connection connection = dataSource.getConnection()
JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),
parameters, connection)
// excel输出
System.out.println("---------Jasper begin-------------")
ByteArrayOutputStream oStream = new ByteArrayOutputStream()
JRXlsExporter exporter = new JRXlsExporter()
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint)
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream)
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE)
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE)
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.FALSE)
exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE)
// exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312")
// jrXlsExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312")
exporter.exportReport()
byte[] bytes = oStream.toByteArray()
if (bytes != null && bytes.length > 0) {
response.reset()
System.out.println("---------Jasper end excel-------------")
response.setContentType("application/vnd.ms-excel")
//response.setHeader("Content-Disposition", "attachment;filename=\"" + reportFile+ ".XLS\"")
response.setContentLength(bytes.length)
ServletOutputStream ouputStream = response.getOutputStream()
ouputStream.write(bytes, 0, bytes.length)
ouputStream.flush()
ouputStream.close()
} else {
out.print("bytes were null!")
}
connection.close()
oStream.close()
reportFile = null
} catch (JRException ex) {
out.print("Jasper Output Error:" + ex.getMessage())
}
out.clear()
out = pageContext.pushBody()
%>
三、 生成html
<%@ 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.*"%>
<%@page import="com.demo.customer.domain.Purchasepo"%>
<%@ page language="java" import="com.demo.customer.domain.Exportso,javax.sql.DataSource,customer.ConnectionFactory" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>预览</title>
</head>
<body>
<%
String invno = (String) request.getSession().getAttribute("report_no");//点击预览按钮时将合同号作为参数传入报表
String rowid =invno;//初始化变量
String rowid2 = basePath+"/pic/softexlogo.jpg";//初始化变量
String rowid3 = basePath+"/pic/gz.jpg";//初始化变量
File reportFile = new File(application.getRealPath("/report/report_dzfp.jasper"));
//JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromFile(reportFile.getPath());
Map parameters = new HashMap();
parameters.put("invno", rowid);
parameters.put("logo", rowid2);
parameters.put("gz", rowid3);
System.out.println("---------conn html-------------");
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//单独链接数据库,已弃用
//Connection conn = DriverManager.getConnection("jdbc:sqlserver://192.168.1.84:1433;databaseName=p_test", "sa", "123456");//单独链接数据库,已弃用
DataSource dataSource =ConnectionFactory.getDataSource();//调用连接池
Connection connection=dataSource.getConnection();//调用连接池
System.out.println("---------Jasper begin html-------------");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
exporter.exportReport();
out.flush();
connection.close();
System.out.println("---------Jasper end html-------------");
%>
</body>
</html>