`
cogoming
  • 浏览: 12850 次
文章分类
社区版块
存档分类
最新评论

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)在ireportclasspath中加入iTextAsian.jar2)在ireportjrxml时,看ireport最左边有个属性栏。

*

*下边的设置就在点字段的属性后出现。pdffontnameSTSong-LightpdfencodingUniGB-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);

}

}

分享到:
评论

相关推荐

    ireport导出pdf和word文档实例

    - "iReport导出pdf和word"这个压缩包文件很可能包含了`iReport`设计的报表模板(.jrxml文件)以及生成的PDF和Word示例文件。 - 分析这些文件可以帮助理解布局、数据绑定和导出过程。 通过以上的步骤和技巧,你...

    Ireport Excel带图片导出之可拉伸图片不失真

    IReport是一款基于Java的开源报表设计工具,它允许开发者创建复杂的报告模板,然后用JasperReports库来生成PDF、HTML、Excel等多种格式的报表。在导出Excel报表时,如果包含图片,可能会遇到图片在单元格中被拉伸或...

    ireport报表制作步骤详解.pdf

    iReport是一款由开源社区sf.net提供的免费软件工具,它主要用于通过可视化方式设计并生成JasperReports所使用的报表格式文件。由于JasperReports自身并没有提供一个非常友好的用户界面来支持报表的设计工作,因此...

    在JSP中导出pdf和excel.docx

    2. 创建 Excel 文件:使用 Apache POI 生成 Excel 文件,选择报表格式和输出路径。 3. 导出 Excel 文件:使用 Apache POI 导出 Excel 文件。 在 JSP 中可以使用多种方式来导出 PDF 和 Excel 文件。使用 iReport 和 ...

    ireport导出使用的包

    《Ireport导出工具及其依赖库详解》 在IT领域,报表生成是不可或缺的一部分,而Ireport作为一款强大的Java报表设计工具,深受开发者喜爱。它允许用户通过直观的图形界面设计复杂的报表,并能够导出为多种格式,如...

    ireport+jasperReport+Swing总结.doc

    - **导出格式**:可以将报表导出为 PDF、HTML、CSV、XML 等多种格式。 **2. 必需的 jar 包** 对于 jasperReport 4.5.0 版本,以下是一些必需的 jar 包: - jasperreports-4.5.0.jar - groovy-all-1.7.5.jar - ...

    ireport报表所需jar包

    - jasperreports.jar:这是JasperReports的核心库,包含了报表渲染、数据填充、PDF、HTML、Excel等多种输出格式的支持。 - ireport-designer.jar:iReport的设计器组件,虽然在运行时并不直接使用,但在开发阶段...

    jasperreports打印word格式报表的问题

    JasperReports是一款开源Java库,它允许开发者创建、设计和导出各种类型的报告,包括PDF、HTML、Excel和Word等格式。 描述中的链接指向了一篇博客文章,尽管没有提供具体的内容,但我们可以根据标题推测,博主可能...

    在JSP中导出pdf和excel.pdf

    总之,要在JSP中导出PDF和Excel,需要正确配置开发环境,使用iReport设计报表,连接数据源,然后在服务器端使用JasperReports API将报表转换并导出。这涉及到多个库的集成和HTTP响应的设置,确保了用户能够方便地...

    jasperreport导出Html xls PDF doc 格式文档源代码

    标题中提到的"jasperreport导出Html xls PDF doc 格式文档源代码",是指使用JasperReport库将报表转换为这四种常见格式。这些格式各有特点:HTML适合在线查看和分享,XLS适用于电子表格处理,PDF适用于打印和正式...

    java实现ireport转换pdf

    Java 实现 iReport 转换为 PDF 是一个常见的任务,尤其在企业级应用中,经常需要将报表数据导出为 PDF 格式方便打印或存档。iReport 是一个强大的报表设计工具,它允许用户使用 JavaServer Pages (JSP) 和 ...

    Apache POI HSSF和XSSF读写EXCEL总结

    Apache POI HSSF和XSSF读写EXCEL总结

    JasperReport+iReport整合的Web报表开发

    JasperReport是一款功能强大且灵活的报表生成工具,它支持多种输出格式,包括PDF、HTML、XML、Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)。作为一个全Java编写的库,JasperReport可以很好地集成到Java...

    iReport制作报表可能会用到的包

    这些库可以帮助iReport实现更多功能,如导入导出Excel格式的报表,或者使用自定义的模板语言。 6. 示例报表和模板:有时,压缩包会包含示例报表和模板,帮助初学者了解如何使用iReport和JasperReports设计报表。...

    Ireport 3.7 图文教程

    7. **结果查看**:内置浏览器可以直接查看生成的报表,并支持以 PDF、HTML 等格式导出。 #### 重要的类 - **`net.sf.jasperreports.engine.design.JasperDesign`**:用于表示报表产生的原始类。 - **`...

    iReport web开发配置向导

    iReport 的主要功能是辅助开发者创建复杂的报表布局并将其转换为 JasperReports 可识别的 XML 格式文件。 #### 二、iReport 安装及环境搭建 ##### 2.1 安装 iReport iReport 的安装过程相对简单,这里我们以版本 ...

    jasperreports-1.3.3与iReport1.3.3初级使用

    在使用JasperReports时,你需要依赖一些第三方库,例如:itext-1.3.1.jar用于PDF生成,jfreechart-1.0.0.jar用于图表绘制,poi-2.5.1.jar用于处理Excel数据,mysql.jar用于连接MySQL数据库。这些库在压缩包文件中已...

    ireport 使用的 jar .zip

    【标签】:“iReport”是这个话题的核心,它是一个基于Java的报表设计工具,支持JRXML格式,可以导出多种格式的报表,如PDF、HTML、Excel等。它的主要功能包括设计自定义报表模板、数据源配置、参数化报告以及复杂的...

Global site tag (gtag.js) - Google Analytics