- 浏览: 199938 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
getthrough:
感谢整理!
MySQL服务添加到Windows系统服务中 -
zi_wu_xian:
数据的导出用POI还凑合,不过还需要针对xlsx和xls文件写 ...
Java POI导出EXCEL经典实现 -
chengpengvb:
...
Flex 4中组件背景设置(填充方式)group为例子 -
java爱好者92:
记得帆软报表也有主子报表的这个功能,他们官网上的教程很详细!
IReport的子报表设置 -
qq3061280:
...
java 中文转码demo大全
[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;
/**
* @类名:ReportDataSource.java
* @类功能描述: 产生报表填充需要使用的数据源
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:JasperPrintWithJRDataSource.java
* @类功能描述: 使用报表模板及数据等生成JasperPrint
* @author lbc
* @version v1.0.0.1
* @see
*/
/**
* 使用报表模板及数据等生成JasperPrint
* */
public class JasperPrintWithJRDataSource {
/**传入的参数**/
private Map params;
/**jrxml文件**/
private String jrxmlFilePath;
/**模板文件的地址**/
private String reportFilePath;
/**JRDataSource**/
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);
}
/**
* 取得JasperPrint
*/
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("数据填充发生错误,请检查数据库源和用来填充的参数map是否有误!");
}
}
}
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;
/**
* @类名:HTMLExport.java
* @类功能描述: 利用报表生成HTML格式报表
* @author lbc
* @version v1.0.0.1
* @see
*/
/*
* 利用报表生成HTML格式报表
*/
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=",report为你的报表及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;
/**
* @类名:PdfExport.java
* @类功能描述: 导出PDF报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:RTFExport.java
* @类功能描述:导出RTF报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:XMLExport.java
* @类功能描述: 导出XML报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:EXCELExport.java
* @类功能描述: 导出Excel报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:jycfjdsAction.java
* @类功能描述: ACTION调用,导出报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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博客,转载请标明出处:http://blog.csdn.net/AlleanLee/archive/2010/04/23/5519750.aspx[/size]
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;
/**
* @类名:ReportDataSource.java
* @类功能描述: 产生报表填充需要使用的数据源
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:JasperPrintWithJRDataSource.java
* @类功能描述: 使用报表模板及数据等生成JasperPrint
* @author lbc
* @version v1.0.0.1
* @see
*/
/**
* 使用报表模板及数据等生成JasperPrint
* */
public class JasperPrintWithJRDataSource {
/**传入的参数**/
private Map params;
/**jrxml文件**/
private String jrxmlFilePath;
/**模板文件的地址**/
private String reportFilePath;
/**JRDataSource**/
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);
}
/**
* 取得JasperPrint
*/
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("数据填充发生错误,请检查数据库源和用来填充的参数map是否有误!");
}
}
}
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;
/**
* @类名:HTMLExport.java
* @类功能描述: 利用报表生成HTML格式报表
* @author lbc
* @version v1.0.0.1
* @see
*/
/*
* 利用报表生成HTML格式报表
*/
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=",report为你的报表及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;
/**
* @类名:PdfExport.java
* @类功能描述: 导出PDF报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:RTFExport.java
* @类功能描述:导出RTF报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:XMLExport.java
* @类功能描述: 导出XML报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:EXCELExport.java
* @类功能描述: 导出Excel报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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;
/**
* @类名:jycfjdsAction.java
* @类功能描述: ACTION调用,导出报表
* @author lbc
* @version v1.0.0.1
* @see
*/
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博客,转载请标明出处:http://blog.csdn.net/AlleanLee/archive/2010/04/23/5519750.aspx[/size]
相关推荐
3. **报表输出多样化**:可以方便地将报表结果导出为PDF、Excel、RTF、HTML等多种格式,适应不同的分发场景。 4. **可扩展性**:用户可以通过实现特定接口自定义数据源,增加报表的灵活性和适应性。 5. **开源性**...
JasperReport是一款功能强大且灵活的报表生成工具,它支持多种输出格式,包括PDF、HTML、XML、Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)。作为一个全Java编写的库,JasperReport可以很好地集成到Java...
5. **输出格式**:JasperReport 可以将报表导出为多种格式,例如 PDF、HTML、XLS(Excel)、CSV、RTF 和 XML。这使得报表可以在各种平台上查看和分发。 6. **报表参数**:参数可以用来传递动态数据到报表,比如用户...
- **导出格式(Export Formats)**: JasperReport支持多种导出格式,包括HTML、PDF、Excel(XLS或XLSX)、CSV、XML、RTF等,满足不同应用场景的需求。 **2. JasperReport报表设计** 使用iReport,我们可以创建一个...
4. **输出格式转换**:JasperReports支持多种输出格式,包括PDF、HTML、XLS(Excel)、CSV、RTF、XML、ODT、TXT等。开发者可以根据需求选择合适的导出格式,以满足不同应用场景。 5. **嵌入式和独立使用**:...
下面的代码展示了如何在Struts2框架中利用JasperReport生成PDF报表: ```java public class ExportPDFAction extends ActionSupport { public String exportPDF() { try { List list = new ArrayList(); // 这里...
JasperReports是一个纯Java编写的报表引擎,它能够生成多种格式的报表,如PDF、HTML、XML、Excel和RTF。它的核心功能是处理页面布局和数据呈现,能够从各种数据源(如数据库、集合、Java对象等)获取数据,并将其...
JasperReport是一个用Java编写的开源报表工具,能够生成包含丰富内容的报表并导出为PDF、HTML、XML等多种格式。它支持J2EE和Web应用中的动态内容生成。JasperReport的优势在于: - 支持多种报表类型,如十字交叉...
1. **渲染引擎**:JasperReport内置了多种渲染引擎,可以将报表转换为各种格式,如PDF、HTML、Excel、CSV、RTF、XML等。 2. **动态导出**:根据需求,开发者可以在运行时选择导出报表的格式,或者让用户自定义导出...
它支持多种数据源,包括数据库、XML文件、CSV文件等,能够生成PDF、HTML、XLS、RTF等多种格式的报表。在Java应用程序中,JasperReport通过一系列的jar包提供服务,这些jar包是其核心功能实现的基础。 1. **...
7. **导出格式**:JasperReports支持多种导出格式,包括PDF、HTML、Excel、CSV、XML、RTF等。 8. **子报表**:如果需要在报告中嵌套其他报告,可以使用子报表功能。 9. **事件处理**:通过事件处理,可以在特定...
JasperReport是一个开源的报表库,它可以生成各种静态和交互式的报告,包括PDF、HTML、XLS、CSV、RTF、ODT、XML和 Jasper本身格式的文档。在Struts2中,JasperReport通常被用来创建和呈现这些报告,以便用户可以预览...
在输出格式方面,JasperReports可以生成PDF、HTML、XLS、CSV、RTF、XML等多种格式的报表,满足不同应用场景的需求。例如,PDF适合打印,HTML适合在Web上展示,而XLS则便于Excel进行进一步的数据分析。 此外,...
它支持多种输出格式,包括 PDF、HTML、Excel、CSV 和 RTF 等,使得报表能在各种环境中灵活展现。JasperReport 结合了强大的报表设计功能和灵活的数据绑定能力,能够满足企业级报表开发的需求。 **报表设计基础** ...
JasperReports是Java领域中广泛使用的开源报表库,它允许开发者创建、设计和导出各种类型的报表,如PDF、HTML、Excel、CSV等。在v6.3.0版本中,这个强大的工具进一步提升了其功能和易用性,成为了Java应用程序中生成...
高质量的 PowerPoint、RTF、Word、电子表格文档或原始 CSV、JSON 或 XML。创建自定义导出器以满足任何需求并不困难。 可访问不同类型的数据源:大数据、CSV、Hibernate、Jaspersoft Domain、JavaBeans、JDBC、JSON、...
它支持多种数据源,包括数据库、CSV文件、XML文件等,可以导出多种格式,如PDF、HTML、Excel、CSV等。在本篇中,我们将深入探讨JasperReports的基础知识。 ### 1. JasperReports架构 JasperReports的核心组件包括...
6. **报表输出格式**:除了PDF,IReport还可以导出为HTML、Excel、CSV、RTF等多种格式,以适应不同的应用场景。 7. **源码相关**:由于标签提到了“源码”,可能涉及如何将IReport设计的报表集成到Java应用程序中,...
这个库允许你在iText中导入和导出RTF数据,从而实现PDF与RTF之间的转换。 至于iReport.jar,这并不是iText库的一部分,而是JasperReports的一部分。JasperReports是一个强大的报告生成工具,它可以利用XML模板生成...
它不仅支持多种数据源,还能灵活地设计各类报表样式,并能将报表导出为PDF、Excel、RTF、HTML等多种格式。本教程旨在详细介绍如何结合Jaspersoft Studio工具和JasperReports框架来生成高质量的报表。 #### 二、...