第二种方法:在后台工具类中将我们要需要的报表类型转成byte数组,然后再jsp页面重组得到报表,补充一下我这里的是直接让报表在浏览器中在线打开的(三种方法都是)
工具类:
package com.unite.util_jasperreports;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSour ce;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
public class JrtsUtil {
public
static byte[] generatePDF(String reportTitle, String reportFilePath,List<Object> list) throws FileNotFoundException {
//
TODO Auto-generated method stub
//begCustNo,endCustNo分别为查询传入的开始编号,结束编号.
//jdbcCustomerDao
= new JdbcCustomerDao();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
"select * from User");//报表标题
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
try
{
JRBeanCollectionDataSour ce
ds = new JRBeanCollectionDataSour ce(list);
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
return
JasperExportManager.exportReportToPdf(jasperPrint);
return
null;
}
catch (JRException e) {
e.printStackTrace();
return
null;
}
}
public
static void main(String[] args) {
try
{
generatePDF("dsf","/iReport/report1.jasper",new
ArrayList());
}
catch (FileNotFoundException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
}
public
static byte[]
generateHtml(String reportTitle, String reportFilePath,List<Object> list) {
//
jdbcCustomerDao = new JdbcCustomerDao();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
"select * from User");
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);//获取数据
JRHtmlExporter
exporter = new JRHtmlExporter();
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
try
{
JRBeanCollectionDataSour ce
ds = new JRBeanCollectionDataSour ce(list);
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
"GBK");
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
oStream);
exporter.exportReport();
byte[]
bytes = oStream.toByteArray();
return
bytes;
}
catch (JRException e) {
e.printStackTrace();
return
null;
}
}
public
static byte[] generateExcel(String reportTitle, String reportFilePath,List<Object> list) {
//jdbcCustomerDao
= new JdbcCustomerDao();
Map
parameters = new HashMap();//参数设定
parameters.put("lie",
"select * from User");
//List
list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
JRXlsExporter
exporter = new JRXlsExporter(); // Excel
ByteArrayOutputStream
oStream = new ByteArrayOutputStream();
try
{
JRBeanCollectionDataSour ce
ds = new JRBeanCollectionDataSour ce(list);
JasperPrint
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, ds);
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.exportReport();
byte[]
bytes = oStream.toByteArray();
return
bytes;
}
catch (JRException e) {
e.printStackTrace();
return
null;
}
}
}
jsp页面:
exclede :
<%
//String
filePath=getServletContext().getRealPath("/")+"report1.jasper";
String
filePath = "/iReport/report1.jasper";//模板的路径
byte[]
bytes=null;
//String
begNo=request.getParameter("beginCustNo");
//String
endNo=request.getParameter("endCustNo");
String
type="html";
List
list = new ArrayList();//数据数组
if(type.equals("Pdf")){
bytes=
JrtsUtil.generatePDF("客户资料明细表",filePath,list);
}else
if(type.equals("Excel")){
bytes=JrtsUtil.generateExcel("客户资料明细表",filePath,list);
}else{
bytes=JrtsUtil.generateHtml("客户资料明细表",filePath,list);
}
try{
if(bytes!=null){
if(type.equals("Pdf")){
//
response.setContentType("application/pdf");
response.encodeRedirectUrl("report1.pdf");
//response.encodeUrl()
}else
if(type.equals("Excel")){
response.setContentType("application/vnd.ms-excel");
}else
if(type.equals("html")){
response.setContentType("text/html");
response.setContentLength(bytes.length);
ServletOutputStream
ouputStream = response.getOutputStream();
ouputStream.write(bytes,0,bytes.length);
ouputStream.flush();
ouputStream.close();
}
}else{
out.println("error");
}
}catch(Exception
e){
out.print("错误信息:"+e.getMessage());
}finally{
out.clear();//在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
//没有妥善处理好的原因。
out
= pageContext.pushBody();
}
%>
第三种方法:直接在jsp页面上使用
<%
//
加载.jasper文件
File
jasperRile = new File(ServletActionContext.getServletContext().getRealPath("/iReport/report1.jasper"));
//
构造JasperReport 文件
JasperReport
jasperReport = (JasperReport)JRLoader.loadObject(jasperRile.getPath());
//参数处理
Map
parameters = new HashMap();
parameters.put("lie",
"select * from User");
//
用数据填充JasperReport文件
JasperPrint
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,SSS.testReport1());
//
声明导出对像
JRXlsExporter
exporter = new JRXlsExporter();
//
设置导出哪个模板
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();
out.clear();//在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
//没有妥善处理好的原因。
out
= pageContext.pushBody();
%>
html格式的:
<%
//
加载.jasper文件
File
jasperRile = new File("/iReport/report1.jasper");
//
构造JasperReport 文件
JasperReport
jasperReport = (JasperReport)JRLoader.loadObject(jasperRile.getPath());
//参数处理
Map
parameters = new HashMap();
parameters.put("lie",
"select * from User");
//
用数据填充JasperReport文件
JasperPrint
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,SSS.testReport1());
//
声明HTML类型的导出类
JRHtmlExporter
exporter = new JRHtmlExporter();
//
设置导出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");
//
导出
exporter.exportReport();
out.clear();//在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
//没有妥善处理好的原因。
out
= pageContext.pushBody();
%>
pdf格式的:
<%
//
加载.jasper文件
File
jasperRile = new File(ServletActionContext.getServletContext().getRealPath("/iReport/report1.jasper"));
try{
//
构造JasperReport 文件
JasperReport
jasperReport = (JasperReport)JRLoader.loadObject(jasperRile.getPath());
//参数处理
Map
parameters = new HashMap();
parameters.put("lie",
"select * from User");
//
用数据填充JasperReport文件
JasperPrint
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, SSS.testReport1());
//
pdf导出设置
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
//
使用JRPdfExproter导出器导出pdf
JRPdfExporter
exporter = new JRPdfExporter();
//
设置JasperPrintList
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT,
jasperPrint);
//
设置导出流
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,
response.getOutputStream());
//
开始导出
exporter.exportReport();
out.clear();//在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
//没有妥善处理好的原因。
out
= pageContext.pushBody();
}catch(Exception
e){
e.printStackTrace();
}
%>
到此三种方法列举完毕,置于他们之间运用时的差别改天在写
工具类:
package com.unite.util_jasperreports;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSour
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
public class JrtsUtil {
}
jsp页面:
exclede :
<%
第三种方法:直接在jsp页面上使用
<%
html格式的:
<%
pdf格式的:
<%
%>
到此三种方法列举完毕,置于他们之间运用时的差别改天在写