通用导出页面 <%@ 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(); } %>