引用nick 的 ireport导出各种格式(pdf,excel,word,html,print)
自己也适了下,可用。
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;import javax.servlet.ServletOutputStream;
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.JRExporter;
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.JasperReport;
import net.sf.jasperreports.engine.base.JRBaseReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
public class JasperExportUtils
{
public static void prepareReport(JasperReport jasperReport, String type) {
/*
* 如果导出的是excel,则需要去掉周围的margin
*/
if ("excel".equals(type))
try {
Field margin = JRBaseReport.class
.getDeclaredField("leftMargin");
margin.setAccessible(true);
margin.setInt(jasperReport, 0);
margin = JRBaseReport.class.getDeclaredField("topMargin");
margin.setAccessible(true);
margin.setInt(jasperReport, 0);
margin = JRBaseReport.class.getDeclaredField("bottomMargin");
margin.setAccessible(true);
margin.setInt(jasperReport, 0);
Field pageHeight = JRBaseReport.class
.getDeclaredField("pageHeight");
pageHeight.setAccessible(true);
pageHeight.setInt(jasperReport, 2147483647);
} catch (Exception exception) {
}
}/**
* 导出excel
*/
public static void exportExcel(JasperPrint jasperPrint,
HttpServletRequest request, HttpServletResponse response) throws IOException, JRException {
/*
* 设置头信息
*/
response.setContentType("application/vnd.ms-excel");
String fileName = new String("未命名.xls".getBytes("GBK"), "ISO8859_1");
response.setHeader("Content-disposition", "attachment; filename="
+ fileName);ServletOutputStream ouputStream = response.getOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
ouputStream);
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();
ouputStream.flush();
ouputStream.close();
}/**
* 导出pdf,注意此处中文问题,* 这里应该详细说:主要在ireport里变下就行了。看图
* 1)在ireport的classpath中加入iTextAsian.jar
* 2)在ireport画jrxml时,看ireport最左边有个属性栏。* 下边的设置就在点字段的属性后出现。
* pdf font name :STSong-Light ,pdf encoding :UniGB-UCS2-H
*/
public static void exportPdf(JasperPrint jasperPrint,
HttpServletRequest request, HttpServletResponse response) throws IOException, JRException {
response.setContentType("application/pdf");
String fileName = new String("未命名.pdf".getBytes("GBK"), "ISO8859_1");
response.setHeader("Content-disposition", "attachment; filename="
+ fileName);
ServletOutputStream ouputStream = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint,
ouputStream);
ouputStream.flush();
ouputStream.close();
}/**
* 导出html
*/
public static void exportHtml(JasperPrint jasperPrint,
HttpServletRequest request, HttpServletResponse response) throws IOException, JRException {
response.setContentType("text/html");
ServletOutputStream ouputStream = response.getOutputStream();
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(
JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
Boolean.FALSE);
exporter
.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
"UTF-8");
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
ouputStream);exporter.exportReport();
ouputStream.flush();
ouputStream.close();
}/**
* 导出word
*/
public static void exportWord(JasperPrint jasperPrint,
HttpServletRequest request, HttpServletResponse response)
throws JRException, IOException {
response.setContentType("application/msword;charset=utf-8");
String fileName = new String("未命名.doc".getBytes("GBK"), "ISO8859_1");
response.setHeader("Content-disposition", "attachment; filename="
+ fileName);
JRExporter exporter = new JRRtfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response
.getOutputStream());exporter.exportReport();
}/**
* 打印
*/
public static void exportPrint(JasperPrint jasperPrint,
HttpServletResponse response, HttpServletRequest request)
throws IOException {
response.setContentType("application/octet-stream");
ServletOutputStream ouputStream = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
oos.writeObject(jasperPrint);
oos.flush();
oos.close();
ouputStream.flush();
ouputStream.close();
}/**
* 按照类型导出不同格式文件
*
* @param datas
* 数据
* @param type
* 文件类型
* @param is
* jasper文件的来源
* @param request
* @param response
*/
public static void export(Collection datas, String type, InputStream is,
HttpServletRequest request, HttpServletResponse response) {
try {
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);
prepareReport(jasperReport, type);
JRDataSource ds = new JRBeanCollectionDataSource(datas, false);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameters, ds);if (EXCEL_TYPE.equals(type)) {
exportExcel(jasperPrint, request, response);
} else if (PDF_TYPE.equals(type)) {
exportPdf(jasperPrint, request, response);
} else if (HTML_TYPE.equals(type)) {
exportHtml(jasperPrint, request, response);
} else if (WORD_TYPE.equals(type)) {
exportWord(jasperPrint, request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}public static final String PRINT_TYPE = "print";
public static final String PDF_TYPE = "pdf";
public static final String EXCEL_TYPE = "excel";
public static final String HTML_TYPE = "html";
public static final String WORD_TYPE = "word";
}
- 浏览: 721916 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (442)
- 中间件 (20)
- hibernate (13)
- spring (20)
- 数据库 (78)
- struts (8)
- ibatis (4)
- 前端 (61)
- linux,windows (21)
- it大环境 (32)
- IDE工具 (36)
- 感悟 (6)
- java基础 (40)
- 经典面试题 (10)
- exception总结 (14)
- 软件设计 (8)
- 工具类应用及新技术 (48)
- php (2)
- 微信 (1)
- 设计模式 (2)
- 重构 (3)
- 管理 (2)
- 工作笔记 (1)
- jmx (1)
- 算法 (4)
- 多线程同步 (2)
- 代码管理工具 (5)
- 代码检测及测试 (2)
- 缓存服务 (1)
- SOA及ROA (5)
- groovy (1)
- 网络编程 (2)
- 大数据 (6)
最新评论
-
love398146779:
我当然不能全写上面了,这只是其中一部分https连接。
java 建立 https连接 -
yuenkin:
大哥,这是双向认证吗?
java 建立 https连接 -
issu:
例如以下代码能遍历字符串"Tom:M ...
<c:forTokens>标签delims截取字符 -
love398146779:
2*3*5=30,是30个以上的请求才拒绝呀。
tomcat的maxThreads、acceptCount(最大线程数、最大排队数) -
love398146779:
2台跟1台一样的效果。
zookeeper与activemq最新存储replicatedLevelDB整合
发表评论
-
HttpUrlConnection与httpclient的速度
2015-03-10 17:59 877文件越大,可能HttpUrlConnection的速度优势越明 ... -
FastDFS与hadoop的HDFS区别
2015-01-12 16:12 4195主要是定位和应用场合不一样。 hadoop的文件系统HDFS主 ... -
RequestDispatcher实现文件下载
2015-01-04 14:55 748本来我使用的是文件流下载的方式,在Tomcat下可行,但是在W ... -
javax.mail.MessagingException: 501 5.0.0 HELO requires domain address
2014-12-22 17:32 7http://zouhuajian01.blog.163.co ... -
javax.mail.MessagingException: 501 5.0.0 HELO requires domain address
2014-12-22 17:32 1069http://zouhuajian01.blog.163.co ... -
https协议网页能够被搜索引擎收录吗?
2014-11-12 17:07 563百度现在只能收录少部分的https,大部分的https网页无法 ... -
aes加解密
2014-10-29 13:18 733import java.io.File; import ja ... -
udp测试
2014-10-22 15:39 498udp,常用于聊天室,直接向服务发送信息,不进行3次握手。 服 ... -
aio测试
2014-10-22 14:22 695由操作系统来做异步 服务端: package aio; ... -
fastdfs使用实战(Java实例篇)
2014-09-29 18:11 22516一、创建一个maven的webproject,叫file-ma ... -
谷歌(Chrome)安装Advanced REST Client插件
2014-09-29 10:44 2717以前用过jmeter测试各种url连接,soapui测试web ... -
sftp工具类
2014-09-28 13:29 953import java.io.File; import ja ... -
quartz配置
2014-09-22 10:35 374以前做过好几个quartz的应用项目,但都没有记录,当再次用到 ... -
ftp工具类
2014-09-19 18:08 733每回用到总去网上找一通,还是自已总结下比较好 package ... -
使用 JCaptcha 开发图形和声音验证码
2014-08-18 10:13 861http://www.ibm.com/developerwor ... -
Joda-Time 简介
2014-08-18 10:01 509iteye转的文章与自已的文章,不能放到一起。真麻烦。 转一个 ... -
log.isDebugEnabled()
2014-08-06 11:55 745在使用log4j,common-log这样的log框架时,发现 ... -
zookeeper与activemq最新存储replicatedLevelDB整合
2014-08-01 19:57 7018测试环境:三台VM虚拟机centos6.4 64位 mini版 ... -
一致性哈希算法原理 .
2014-08-01 19:53 546http://baike.baidu.com/view/158 ... -
map,xml互转
2014-06-24 11:46 95801.这个转出来会有很多空格package cn.paypalm ...
相关推荐
- "iReport导出pdf和word"这个压缩包文件很可能包含了`iReport`设计的报表模板(.jrxml文件)以及生成的PDF和Word示例文件。 - 分析这些文件可以帮助理解布局、数据绑定和导出过程。 通过以上的步骤和技巧,你...
下面,我们将详细讲解iReport导出报表为PDF所涉及的关键点。 1. iReport报表设计: iReport报表设计过程中,首先需要一个jasper文件(.jrxml),这是一个XML格式的报表设计模板。在这个模板中,可以定义报表的布局...
iReport是一款功能强大的开源报表设计工具,它允许用户创建复杂的报告,并支持导出到多种格式,包括Excel。本篇将详细讲解如何在iReport 5.1.0版本中导出包含Excel公式的报表,以求和公式为例。 首先,我们需要理解...
根据提供的文件信息,我们可以总结出以下相关知识点: ### 一、IReport简介 IReport 是一个开源的报表设计工具,可以方便地制作各种...通过以上步骤和注意事项,可以有效地利用 IReport 和 Java 实现报表的导出功能。
《Ireport导出工具及其依赖库详解》 在IT领域,报表生成是不可或缺的一部分,而Ireport作为一款强大的Java报表设计工具,深受开发者喜爱。它允许用户通过直观的图形界面设计复杂的报表,并能够导出为多种格式,如...
本文将深入探讨"ireport导出pdf文件中文问题"这一主题,以及如何解决这类问题。 首先,我们要理解这个问题出现的原因。在Java环境中,iReport使用了iText库来生成PDF文件。iText是一个功能强大的PDF库,但默认情况...
【ireport导出报表技术详解】 ireport是一款强大的报表设计工具,主要用于生成PDF、HTML、Excel等格式的报表。在软件开发中,ireport能够帮助开发者高效地设计和导出复杂的业务报表。以下将详细解释ireport导出报表...
在Java开发中,IReport是一款常用的报表设计工具,它可以与JasperReports库配合,用于创建复杂的报告并导出成各种格式,包括Excel。本篇文章将详细介绍如何使用IReport和Java代码来导出Jasper文件为Excel。 首先,...
标题 "Ireport Excel带图片导出之可拉伸图片不失真" 涉及到的是在使用IReport工具进行报表设计时,如何将带有图片的数据导出到Excel文件,并且在图片被拉伸时保持其清晰度和不失真的技术问题。在实际应用中,这通常...
整合SpringMVC和iReport的目的是为了在Web应用程序中方便地生成和导出Excel报表。以下是一个基本的步骤流程: 1. **配置SpringMVC**:首先,你需要在SpringMVC的配置文件中声明对iReport的支持。这通常包括添加...
IReport是一款强大的报表设计工具,它是JasperReports项目的一部分,用于创建复杂的报表模板。这个教程主要针对初学者,旨在帮助他们理解如何通过IReport来制作模板,特别适用于那些对IReport使用感到困惑的用户。 ...
根据提供的信息,我们可以深入探讨如何使用iReport工具及其Java API来导出Excel文件,并进一步讨论相关的其他导出功能,如PDF、HTML和Word文档的生成。 ### iReport简介 iReport是一款开源报表设计工具,主要用来...
java+ireport 例子 导出html以及pdf 可以直接运行,使用的是mysql数据库 DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `...
标题 "ireport5.6 导出excel,pdf" 指的是使用iReport 5.6版本创建和导出报表到Excel和PDF格式的过程。iReport是一款强大的报表设计工具,它与Java Report Design Language (JRDJ) 和JavaServer Pages (JSP) 配合使用...
**IReport教程(Word版本)** IReport是一款强大的开源报表设计工具,它是JasperReports库的一部分,用于创建复杂的报表设计,这些设计可以被Java应用程序、Web应用或服务器平台使用。本教程将指导你如何利用...
标题 "iReport+Java 导出 PDF/byte[]" 指的是使用 iReport 工具结合 Java 语言来生成 PDF 文件并将其以字节数组(byte[])的形式处理。iReport 是一个开源的报表设计工具,常用于 JasperReports 库,能够帮助开发者...
在这个场景下,我们将探讨如何使用Java与iReport协作开发报表,并将结果导出为PDF格式。为了实现这一目标,我们需要一系列的jar包,这些jar包在你提供的压缩文件中应该已经包含。 首先,iReport本身是基于...
【描述】:“本人验证过的jsp代码,ireport导出pdf excel报表” 在Java Web开发中,生成各种类型的报表是常见的需求,例如用于数据分析、业务统计或者数据导出等。iReport是一款强大的开源报表设计工具,它基于...
总的来说,这个例子涵盖了报表设计、数据绑定、以及通过iReport导出到HTML和PDF的关键技术,对于想要深入理解和应用JasperReports及iReport的开发者来说,是一个有价值的资源。通过分析和运行提供的源代码,你可以更...
iReport是一款功能强大的开源报表设计工具,它允许用户通过直观的拖放界面创建复杂的报告,并支持多种输出格式,包括PDF。当我们在iReport中尝试生成PDF文件时,可能会遇到汉字无法正常显示的问题。这通常是因为缺少...