天天看點

jasperreport實作Html、Pdf、Rtf、Excel、Xml報表導出

[size=medium][size=medium]1.鏁版嵁婧?JRDataSource)

import java.util.ArrayList;

import java.util.List;

import lbc.report.basequery.QueryData;

import lbc.report.bean.VioWritJycfjds;

import lbc.report.bean.base.BaseVioWritJycfjds;

import org.hibernate.Session;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRField;

public class ReportDataSource implements JRDataSource {

private int index = -1;

private static QueryData queryData=new QueryData();

private static List list=new ArrayList();

static

{

String SQL="select * from VIO_WRIT_JYCFJDS";

list=queryData.sqlQuery(SQL, VioWritJycfjds.class);

}

public Object getFieldValue(JRField field) throws JRException {

String fieldName=field.getName();

if(fieldName.equals("bh"))

{

return ((VioWritJycfjds)list.get(index)).getId();

}

if(fieldName.equals("bt"))

{

return ((VioWritJycfjds)list.get(index)).getJybt();

}

if(fieldName.equals("sfjg") && (((VioWritJycfjds) list.get(index)).getJysfjg())!=null && (((VioWritJycfjds) list.get(index)).getJysfjg()).equals("1"))

{

return "\u221A";

}

}

2.JasperPrintWithJRDataSource绫?

import java.io.File;

import java.util.Map;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.util.JRLoader;

public class JasperPrintWithJRDataSource {

private Map params;

private String jrxmlFilePath;

private String reportFilePath;

private JRDataSource dataSource;

public JRDataSource getDataSource() {

return dataSource;

}

public void setDataSource(JRDataSource dataSource) {

this.dataSource = dataSource;

}

public String getJrxmlFilePath() {

return jrxmlFilePath;

}

public void setJrxmlFilePath(String jrxmlFilePath) {

this.jrxmlFilePath = jrxmlFilePath;

}

public Map getParams() {

return params;

}

public void setParams(Map params) {

this.params = params;

}

public String getReportFilePath() {

return reportFilePath;

}

public void setReportFilePath(String reportFilePath) throws Exception {

if(reportFilePath==null || !reportFilePath.endsWith(".jasper"))

throw new Exception("浼犲叆鐨勬ā鏉挎枃浠舵牸寮忎笉瀵癸紝璇蜂紶鍏ヤ互.jasper涓哄悗缂€鐨勬枃浠?");

this.reportFilePath = reportFilePath;

}

public JasperPrintWithJRDataSource () {

super();

}

public JasperPrintWithJRDataSource(String jrxmlFilePath,String reportFilePath,Map params,JRDataSource dataSource) throws Exception {

if(jrxmlFilePath==null || !jrxmlFilePath.endsWith(".jrxml"))

throw new Exception("妯℃澘鏂囦歡鏍煎紡涓嶅锛岃浼犲叆浠?jrxml涓哄悗缂€鐨勬枃浠訛紒");

if(dataSource==null)

throw new Exception("dataSource涓嶅簲褰撲負null!");

this.setJrxmlFilePath(jrxmlFilePath);

this.setReportFilePath(reportFilePath);

this.setParams(params);

this.setDataSource(dataSource);

}

public JasperPrint getJasperPrint() throws Exception {

//缂栬瘧鎴?Jasper鏂囦歡

JasperCompileManager.compileReportToFile(this.jrxmlFilePath);

File reportFile=new File(this.reportFilePath);

if(!reportFile.exists())

throw new Exception("浼犲叆鐨勬ā鏉挎枃浠朵笉瀛樺湪锛?);

try {

//LOAD 缂栬瘧濂界殑妯℃澘

JasperReport jasperReport=(JasperReport) JRLoader.loadObject(reportFile.getPath());

//杩涜鏁版嵁濉厖

JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport, this.params, this.dataSource);

return jasperPrint;

} catch (JRException jre) {

jre.printStackTrace();

throw new Exception("鏁版嵁濉厖鍙戠敓閿欒锛岃妫€鏌ユ暟鎹簱婧愬拰鐢ㄦ潵濉厖鐨勫弬鏁癿ap鏄惁鏈夎!");

}

}

}

3.瀵煎嚭HTML鏍煎紡鎶ヨ〃

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.jsp.JspWriter;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.export.JRHtmlExporter;

import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;

import net.sf.jasperreports.j2ee.servlets.ImageServlet;

public class HTMLExport {

public void export(HttpServletRequest request,HttpServletResponse response,String jrxmlFilePath,String reportFilePath,Map params,JRDataSource dataSource) throws Exception {

try {

response.reset();

response.setContentType("text/html; charset=GBK");

PrintWriter writer=response.getWriter();

try {

JasperPrint jasperPrint=new JasperPrintWithJRDataSourceNew(jrxmlFilePath,reportFilePath,params,dataSource).getJasperPrint();

//浣跨敤JRHtmlExporter瀵煎嚭Html鏍煎紡

JRHtmlExporter exporter=new JRHtmlExporter();

request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, writer);

//鎶ヨ〃杈規鍥劇墖璁劇疆"report/image?image="锛宺eport涓轟綘鐨勬姤琛ㄥ強PX鍥劇墖鎵€鍦ㄧ洰褰?

//exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "report/image?image=");

//鎶ヨ〃杈規鍥劇墖璁劇疆IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE锛屼笉浣跨敤鍥劇墖

exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);

exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GBK");

//瀵煎嚭

exporter.exportReport();

} catch (Exception e) {

e.printStackTrace();

throw new Exception("瀵煎嚭HTML鏍煎紡鎶ヨ〃鏃跺彂鐢熼敊璇紒");

}finally{

if(writer!=null)

{

try {

writer.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

} catch (IOException ioe) {

ioe.printStackTrace();

}

throw new Exception("浣跨敤JRHtmlExporter瀵煎嚭Html鏍煎紡鏃跺彂鐢熼敊璇紒");

}

4.瀵煎嚭Pdf鎶ヨ〃

import java.io.IOException;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletOutputStream;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperRunManager;

import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;

import net.sf.jasperreports.engine.export.JRPdfExporter;

import net.sf.jasperreports.engine.export.JRPdfExporterParameter;

public class PDFExport {

public void exportToPDF(HttpServletRequest request,HttpServletResponse response,String jrxmlFilePath,String reportFilePath,Map params,JRDataSource dataSource) throws Exception

{

try{

response.reset();

response.setContentType("application/pdf;charset=GBK");

//PDF瀵煎嚭璺緞鍙婂悕绉?

String destFileName = reportFilePath.substring(0,reportFilePath.lastIndexOf(".")) + ".pdf";

//瀵煎嚭PDF鏂規硶涓€

//JasperExportManager.exportReportToPdfFile(jasperPrint, destFileName);

//瀵煎嚭PDF鏂規硶浜?

//寰楀埌jasperPrint瀵矽薄

JasperPrint jasperPrint=new JasperPrintWithJRDataSource(jrxmlFilePath,reportFilePath,params,dataSource).getJasperPrint();

JRPdfExporter pdfexporter = new JRPdfExporter();

pdfexporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

pdfexporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFileName);

pdfexporter.exportReport(); System.out.println("Done!");

}catch(IOException e){

e.printStackTrace();

}

}

}

5.瀵煎嚭RTF鎶ヨ〃

import java.io.IOException;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.jsp.JspWriter;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.export.JRRtfExporter;

public class RTFExport {

public void exportToRtf(HttpServletRequest request,HttpServletResponse response,String jrxmlFilePath,String reportFilePath,Map params,JRDataSource dataSource) throws Exception {

try {

JasperPrint jasperPrint=new JasperPrintWithJRDataSourceNew(jrxmlFilePath,reportFilePath,params,dataSource).getJasperPrint();

JRRtfExporter rtfExporter=new JRRtfExporter();

rtfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

//璁劇疆瀵煎嚭鏂囦歡鍚?

rtfExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "c://myrtf.rtf");

rtfExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312");

rtfExporter.exportReport();

System.out.println("Done!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

6.瀵煎嚭XML鎶ヨ〃

import java.io.IOException;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.export.JRXmlExporter;

public class XMLExport {

public void exportToXml(HttpServletRequest request,HttpServletResponse response,String jrxmlFilePath,String reportFilePath,Map params,JRDataSource dataSource) throws Exception {

try {

JasperPrint jasperPrint=new JasperPrintWithJRDataSourceNew(jrxmlFilePath,reportFilePath,params,dataSource).getJasperPrint();

JRXmlExporter xmlExporter=new JRXmlExporter();

xmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

xmlExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());

xmlExporter.exportReport();

response.setContentType("text/xml");

System.out.println("Done!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

鐢變簬鍦ㄦ祻瑙堝櫒涓墦寮€Xml鏃訛紝鍦ㄩ〉闈㈣缃噷闇€杩涜鍐呭绫誨瀷鐨勮缃紝鍥犳鏈€濂藉湪JSP椤甸潰涓姞涓婂涓嬩唬鐮侊細

<%@ page contentType="text/xml;charset=GBK"%>

7.瀵煎嚭Excel鎶ヨ〃

import java.io.IOException;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.export.JRXlsExporter;

import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

public class EXCELExport {

public void exportToExcel(HttpServletRequest request,HttpServletResponse response,String jrxmlFilePath,String reportFilePath,Map params,JRDataSource dataSource) throws Exception {

try {

response.reset();

response.setContentType("application/vnd.ms-excel;charset=GBK");

JasperPrint jasperPrint=new JasperPrintWithJRDataSourceNew(jrxmlFilePath,reportFilePath,params,dataSource).getJasperPrint();

JRXlsExporter jrXlsExporter=new JRXlsExporter();

jrXlsExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);

//璁劇疆杈撳嚭娴?

jrXlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,response.getOutputStream());

jrXlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);

jrXlsExporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312");

jrXlsExporter.exportReport();

System.out.println("Done!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

鐢變簬鍦ㄦ祻瑙堝櫒涓墦寮€Excel鏃訛紝鍦ㄩ〉闈㈣缃噷闇€杩涜鍐呭绫誨瀷鐨勮缃紝鍥犳鏈€濂藉湪JSP椤甸潰涓姞涓婂涓嬩唬鐮侊細

<%@ page contentType="application/vnd.ms-excel;charset=GBK"%>

8.ACTION璋冪敤锛屽鍑烘姤琛?

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import lbc.report.report.EXCELExport;

import lbc.report.report.HTMLExportNew;

import lbc.report.report.PDFExport;

import lbc.report.report.RTFExport;

import lbc.report.report.ReportDataSource;

import lbc.report.report.XMLExport;

import net.sf.jasperreports.engine.JRDataSource;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

public class jycfjdsAction extends DispatchAction {

public ActionForward loadReport(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception {

Map params = new HashMap();

JRDataSource dataSource = new ReportDataSource();

//瀵煎嚭HTML鎶ヨ〃

HTMLExportNew htmExportNew=new HTMLExportNew();

htmExportNew.export(request,response,request.getRealPath("/report/jycfjds.jrxml"), request.getRealPath("/report/jycfjds.jasper"), params, dataSource);

//瀵煎嚭PDF鎶ヨ〃

//PDFExport pdfExport=new PDFExport();

//pdfExport.exportToPDF(request, response, request.getRealPath("/report/jycfjds.jrxml"),request.getRealPath("/report/jycfjds.jasper"), params, dataSource);

//瀵煎嚭EXCEL鎶ヨ〃

//EXCELExport excelExport=new EXCELExport();

//excelExport.exportToExcel(request, response, request.getRealPath("/report/jycfjds.jrxml"), request.getRealPath("/report/jycfjds.jasper"), params, dataSource);

//瀵煎嚭XML鎶ヨ〃

//XMLExport xmlExport=new XMLExport();

//xmlExport.exportToXml(request, response, request.getRealPath("/report/jycfjds.jrxml"), request.getRealPath("/report/jycfjds.jasper"), params, dataSource);

//瀵煎嚭RTF鎶ヨ〃

//RTFExport rtfExport=new RTFExport();

//rtfExport.exportToRtf(request, response,request.getRealPath("/report/jycfjds.jrxml"), request.getRealPath("/report/jycfjds.jasper"), params, dataSource);

return null;

}

}

9.璋冪敤JSP椤甸潰瀵煎嚭鎶ヨ〃

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="lbc.report.basequery.QueryData"%>

<%@page import="java.util.List"%>

<%@page import="java.util.ArrayList"%>

<%@page import="lbc.report.report.ReportDataSource"%>

<%@page import="java.util.HashMap"%>

<%@page import="java.util.Map"%>

<%@page import="lbc.report.report.HTMLExportNew"%>

<%@page import="lbc.report.report.PDFExport"%>

<%@page import="net.sf.jasperreports.engine.JRDataSource"%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>瀵煎嚭HTML鏍煎紡鎶ヨ〃</title>

</head>

<body>

<%

//璁劇疆JRDataSource杩炴帴

JRDataSource dataSource=new ReportDataSource();

//璁劇疆澶栭儴鍙傛暟瀵?

Map parameters=new HashMap();

parameters.put("rptToday","2009-06-04");

parameters.put("rptMan","lbc");

PDFExport pdfExport=new PDFExport();

pdfExport.exportToPDF(request,response,request.getRealPath("/reports/jycfjds.jrxml"),request.getRealPath("/reports/jycfjds.jasper"),parameters,dataSource);

%>

</body>

</html>

鏈枃鏉ヨ嚜CSDN鍗氬锛岃漿杞借鏍囨槑鍑哄锛歨ttp://blog.csdn.net/AlleanLee/archive/2010/04/23/5519750.aspx[/size][/size]