您的位置:首页 > 编程语言 > ASP

Jasperreport+iReport报表设计(二)通用导出页面

2009-12-10 16:35 609 查看
通用导出页面

<%@ page language="java" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="net.sf.jasperreports.engine.data.*" %>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="net.sf.jasperreports.j2ee.servlets.ImageServlet"%>
<%
String root_path = this.getServletContext().getRealPath("/");
root_path = root_path.replace('//', '/');
//报表文件路径
String reportFilePath = root_path + "arpReport/test.jasper";
//报表参数
Map parameters = new HashMap();
//子报表路径
parameters.put("SUBREPORT_DIR",root_path + "arpReport/");
//添加参数
parameters.put("ReportTitle","中国科学院");

System.out.println("Report filePath=="+reportFilePath);

int dateType =0; //数据源类型
String expType = "pdf"; //导出文件类型
try{
//数据源
JRDataSource dataSource = null;
//报表填充
JasperPrint jasperPrint = null;
//------数据源类型--start-----------------------------------------
if(dateType==1){ //SQL数据源
Connection conn = null ;
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, conn);
}else if(dateType==2){ //JavaBean数据源
List listBean = null;
dataSource = new JRBeanCollectionDataSource(listBean);
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, dataSource);
}else if(dateType==3){ //XML数据源
org.w3c.dom.Document doc = null;
dataSource = new JRXmlDataSource(doc,"root/data");
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, dataSource);
}else{ //空数据源
dataSource = new JREmptyDataSource();
jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, dataSource);
}
//------数据源类型--start-----------------------------------------
response.reset();
//导出器
JRAbstractExporter exporter = null;
//------导出类型--start-------------------------------------------
if(expType.equals("excel")){ //导出Excel
response.setContentType("application/vnd.ms-excel;charset=GBK");
response.setHeader("Content-Disposition","attachment;filename="+new String(("报表打印.xls").getBytes(),"iso8859-1"));
exporter = new JRXlsExporter();

exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS,Boolean.TRUE); //不显示空列
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); //不显示空行
System.out.println("Done excel!");
}else if(expType.equals("html")){
response.setContentType("text/html; charset=GBK");
exporter=new JRHtmlExporter();
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
//报表边框图片设置"arpReport/image?image=",report为你的报表及PX图片所在目录
//exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "arpReport/image?image=");
//不使用边框图片
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
//处理分页
//exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");
System.out.println("Done html!");
}else{ //导出PDF
response.setContentType("application/pdf;charset=GBK");
exporter = new JRPdfExporter();
//如果保存到硬盘用下面语句
//pdfexporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "c://mypdf.pdf");
exporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED,Boolean.FALSE);
System.out.println("Done pdf!");
}
//------导出类型--end-------------------------------------------
//字体处理,加粗和黑体
Map fontsMap = new HashMap();
fontsMap.put(new FontKey("宋体", true, true), new PdfFont("STSong-Light", "UniGB-UCS2-H", true, true, true));
fontsMap.put(new FontKey("黑体", true, true), new PdfFont("simhei.ttf", "Identity-H", true, true, true));
exporter.setParameter(JRExporterParameter.FONT_MAP, fontsMap);

exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,response.getOutputStream());
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,"GB2312");
exporter.exportReport();
}catch(Exception e){
e.printStackTrace();
}
%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: