- 浏览: 12649 次
文章分类
最新评论
Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,html 格式
Ireport报表导出Poi+ireport导出pdf,doc,excel,html格式
下面是报表导出工具类reportExportUtils需要导出以上格式的报表只需要调用本工具类的exportmain方法即可。
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.lang.reflect.Field;
importjava.util.Collection;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.sf.jasperreports.engine.JRDataSource;
importnet.sf.jasperreports.engine.JRException;
importnet.sf.jasperreports.engine.JRExporter;
importnet.sf.jasperreports.engine.JRExporterParameter;
importnet.sf.jasperreports.engine.JasperExportManager;
importnet.sf.jasperreports.engine.JasperFillManager;
importnet.sf.jasperreports.engine.JasperPrint;
importnet.sf.jasperreports.engine.JasperReport;
importnet.sf.jasperreports.engine.base.JRBaseReport;
importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
importnet.sf.jasperreports.engine.export.JRHtmlExporter;
importnet.sf.jasperreports.engine.export.JRHtmlExporterParameter;
importnet.sf.jasperreports.engine.export.JRRtfExporter;
importnet.sf.jasperreports.engine.export.JRXlsExporter;
importnet.sf.jasperreports.engine.export.JRXlsExporterParameter;
importnet.sf.jasperreports.engine.util.JRLoader;
importorg.apache.commons.lang.StringUtils;
importorg.apache.log4j.Logger;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionContext;
@SuppressWarnings("unchecked")
publicclassJasperUtils{
privatestaticLoggerlogger=Logger.getLogger(JasperUtils.class);
publicstaticfinalStringPRINT_TYPE="print";
publicstaticfinalStringPDF_TYPE="pdf";
publicstaticfinalStringEXCEL_TYPE="excel";
publicstaticfinalStringHTML_TYPE="html";
publicstaticfinalStringWORD_TYPE="word";
publicstaticvoidprepareReport(JasperReportjasperReport,Stringtype){
logger
.debug("Themethod=======prepareReport()start.......................");
/*
*如果导出的是excel,则需要去掉周围的margin
*/
if("excel".equals(type))
try{
Fieldmargin=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);
FieldpageHeight=JRBaseReport.class
.getDeclaredField("pageHeight");
pageHeight.setAccessible(true);
pageHeight.setInt(jasperReport,2147483647);
}catch(Exceptionexception){
}
}
/**
*导出excel
*/
publicstaticvoidexportExcel(JasperPrintjasperPrint,
StringdefaultFilename,HttpServletRequestrequest,
HttpServletResponseresponse)throwsIOException,JRException{
logger
.debug("执行导出excelThemethod=======exportExcel()start.......................");
/*
*设置头信息
*/
response.setContentType("application/vnd.ms-excel");
Stringdefaultname=null;
if(defaultFilename.trim()!=null&&defaultFilename!=null){
defaultname=defaultFilename+".xls";
}else{
defaultname="export.xls";
}
StringfileName=newString(defaultname.getBytes("gbk"),"utf-8");
response.setHeader("Content-disposition","attachment;filename="
+fileName);
ServletOutputStreamouputStream=response.getOutputStream();
JRXlsExporterexporter=newJRXlsExporter();
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.jar2)在ireport画jrxml时,看ireport最左边有个属性栏。
*
*下边的设置就在点字段的属性后出现。pdffontname:STSong-Light,pdfencoding:UniGB-UCS2-H
*/
privatestaticvoidexportPdf(JasperPrintjasperPrint,
StringdefaultFilename,HttpServletRequestrequest,
HttpServletResponseresponse)throwsIOException,JRException{
response.setContentType("application/pdf");
Stringdefaultname=null;
if(defaultFilename.trim()!=null&&defaultFilename!=null){
defaultname=defaultFilename+".pdf";
}else{
defaultname="export.pdf";
}
StringfileName=newString(defaultname.getBytes("GBK"),"utf-8");
response.setHeader("Content-disposition","attachment;filename="
+fileName);
ServletOutputStreamouputStream=response.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint,ouputStream);
ouputStream.flush();
ouputStream.close();
}
/**
*导出html
*
*@parampageIndexStr
*/
privatestaticvoidexportHtml(JasperPrintjasperPrint,
StringdefaultFilename,HttpServletRequestrequest,
HttpServletResponseresponse,StringpageIndexStr)
throwsIOException,JRException{
response.setContentType("text/html");
ServletOutputStreamouputStream=response.getOutputStream();
JRHtmlExporterexporter=newJRHtmlExporter();
//得到当前页码
IntegerpageIndex=getPageIndex(jasperPrint,request,pageIndexStr);
//如果页码不为空则设置分页页码
if(pageIndex!=null){
exporter.setParameter(JRExporterParameter.PAGE_INDEX,pageIndex);
}
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();
}
/**
*
*description:通过传进来的pageIndexStr得到当前页码Date2013-1-18上午10:49:38
*
*@param@paramjasperPrint
*@param@paramrequest
*@param@parampageIndexStr
*@param@return
*@returnInteger
*/
privatestaticIntegergetPageIndex(JasperPrintjasperPrint,
HttpServletRequestrequest,StringpageIndexStr){
//如果pageIndexStr为空或空字符串则返回null
if(pageIndexStr==null||StringUtils.isBlank(pageIndexStr)){
returnnull;
}
IntegerpageIndex=0;
intlastPageIndex=0;
//得到最后一页的页码
if(jasperPrint.getPages()!=null){
lastPageIndex=jasperPrint.getPages().size()-1;
}
//如果字符串==lastPage则反lastPageIndex的值赋给pageIndex并返回pageIndex
if("lastPage".equals(pageIndexStr)){
pageIndex=lastPageIndex;
returnpageIndex;
}
try{
pageIndex=Integer.parseInt(pageIndexStr);
//从ireport传来的PageIndex是从1开始,而JRExporterParameter.PAGE_INDEX是从0开始的
if(pageIndex>0){
pageIndex=pageIndex-1;
}
}catch(Exceptione){
e.printStackTrace();
}
if(pageIndex<0){
pageIndex=0;
}
if(pageIndex>lastPageIndex){
pageIndex=lastPageIndex;
}
returnpageIndex;
}
/**
*导出word
*/
privatestaticvoidexportWord(JasperPrintjasperPrint,
StringdefaultFilename,HttpServletRequestrequest,
HttpServletResponseresponse)throwsJRException,IOException{
response.setContentType("application/msword;charset=utf-8");
Stringdefaultname=null;
if(defaultFilename.trim()!=null&&defaultFilename!=null){
defaultname=defaultFilename+".doc";
}else{
defaultname="export.doc";
}
StringfileName=newString(defaultname.getBytes("GBK"),"utf-8");
response.setHeader("Content-disposition","attachment;filename="
+fileName);
JRExporterexporter=newJRRtfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,response
.getOutputStream());
exporter.exportReport();
}
/**
*按照类型导出不同格式文件
*
*@paramdatas
*数据
*@paramtype
*文件类型
*@paramis
*jasper文件的来源
*@paramrequest
*@paramresponse
*@paramdefaultFilename默认的导出文件的名称
*/
privatestaticvoidexport(Collectiondatas,Stringtype,
StringdefaultFilename,InputStreamis,HttpServletRequestrequest,
HttpServletResponseresponse,StringpageIndexStr){
logger
.debug("导出判断Themethod=======export()start.......................");
try{
logger.info("is=="+is);
JasperReportjasperReport=(JasperReport)JRLoader.loadObject(is);
prepareReport(jasperReport,type);
JRDataSourceds=newJRBeanCollectionDataSource(datas,false);
Mapparameters=newHashMap();
JasperPrintjasperPrint=JasperFillManager.fillReport(
jasperReport,parameters,ds);
if(EXCEL_TYPE.equals(type)){
exportExcel(jasperPrint,defaultFilename,request,response);
}elseif(PDF_TYPE.equals(type)){
exportPdf(jasperPrint,defaultFilename,request,response);
}elseif(HTML_TYPE.equals(type)){
exportHtml(jasperPrint,defaultFilename,request,response,
pageIndexStr);
}elseif(WORD_TYPE.equals(type)){
exportWord(jasperPrint,defaultFilename,request,response);
}
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*导出入口(导出所有的数据)
*
*@paramexportType
*导出文件的类型
*@paramjaspername
*jasper文件的名字如:xx.jasper
*@paramlists
*导出的数据
*@paramrequest
*@paramresponse
*@paramdefaultFilename默认的导出文件的名称
*/
publicstaticvoidexportmain(StringexportType,Stringjaspername,
Listlists,StringdefaultFilename){
exportmain(exportType,jaspername,lists,defaultFilename,null);
}
/**
*导出入口(分页显示导出传入的pageIndex页的数据)
*
*@paramexportType
*导出文件的类型
*@paramjaspername
*jasper文件的名字如:xx.jasper
*@paramlists
*导出的数据
*@paramrequest
*@paramresponse
*@paramdefaultFilename默认的导出文件的名称
*@parampageIndex
*需要导出数据的页码当pageIndex=null时导出所有数据
*/
@SuppressWarnings("deprecation")
publicstaticvoidexportmain(StringexportType,Stringjaspername,
Listlists,StringdefaultFilename,StringpageIndexStr){
logger
.debug("进入导出Themethod=======exportmain()start.......................");
ActionContextct=ActionContext.getContext();
HttpServletRequestrequest=(HttpServletRequest)ct
.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponseresponse=ServletActionContext.getResponse();
Stringfilenurl=request.getRealPath("/view/situation/jasper/"
+jaspername);
Filefile=newFile(filenurl);
InputStreamis=null;
try{
is=newFileInputStream(file);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}
export(lists,exportType,defaultFilename,is,request,response,
pageIndexStr);
}
}
相关推荐
jasper+ireport+jfreechart导出html.excel.word.pdf,两种数据方式:数据库,list.图片路径完美解决,附带所有jar包,部署可用
1、报表导出pdf及excel 2、ireport + springmvc
1、导出pdf excel 子报表 2、ireport springMVC
ireport导出报表.pdf
JasperReport+iReport报表开发手册.pdf
iReport 4.0.1 导出Html和PDF报表完整例子
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, `...
iReport 4.8 报表导出工具,可导出excel,pdf,word等。可以自定义报表样子。
使用ireport工具导出pdf和word文档格式,原来网上找了先导出word格式的,找了很久没找的,整了一周终于出来了,唉~
iReport+jasperReports 制作WEB报表pdf格式,初学JAVA报表很有用
iReport的中文比较详细的入门资料,适合初学者,呵呵
iReport-JasperReports报表开发指南+操作手册 含书签
成 PDF,HTML,或者 XML 格式。它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。JasperReports 完全是由 Java 写成,可以应用于 Java 的应用 程序,包括 J2EE,Web 应用程序中...
iReport 和 Jasperreport整合开发web报表向导
iReport 报表、子报表、主从报表、合计、实例解析1. 开发使用步骤(iReport4.1)... 2 4.1. JasperReport 和iReport的介绍... 2 4.1.1. JasperReport 简介... 3 4.1.2. iReport 简介... 3 4.1.2.1. iReport几个重要...
版本5.1.0 iReport导出excel中带公式 以xls求和为例
本人验证过的jsp代码,ireport导出pdf excel报表
ireport导出excel的代码,怎么把生成jasper文件导出到excel中
struts+ireport报表在页面显示,导出 word \excel\pdf格式 报表的打印 经过测试绝对没问题,
使用的是jboss+zk, 需要自己配置jboss, 只有一些简单代码。