ireport导出excelhtmlpdf等格式完整实例.docx
- 文档编号:7698230
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:4
- 大小:17.08KB
ireport导出excelhtmlpdf等格式完整实例.docx
《ireport导出excelhtmlpdf等格式完整实例.docx》由会员分享,可在线阅读,更多相关《ireport导出excelhtmlpdf等格式完整实例.docx(4页珍藏版)》请在冰豆网上搜索。
ireport导出excelhtmlpdf等格式完整实例
ireport导出excel,html.pdf等格式完整实例
本例报表中的数据是List传入的值,不是通过报表执行查询的数据。
本例是基于struts使用的。
利用ireport工具导出excel
一、导入irport相关的jar包导入
common-digester-1[1].7.jar
commons-javaflow-200060411.jar
itext-1.3.jar
iTextAsian.jar
jasperreports-1.2.4.jar
jcommon-1.0.16.jar
jfreechart-1.0.13.jar
poi-2.0-final-20010126.jar
需要注意的是:
jar包的版本一定要注意,如果本版不同的话,很容易引起错误的。
二、在ireport中画出,需要显示的字段样式(网上有很多这样的例子,这里就不说怎么制作ireport文件了)如下是我制作的文件样式,编译生成.jasper我们需要的这个xx.jasper文件。
三、①当页面点击“导出”时,会执行action中的exportexcel()方法。
(需要注意的是如果页面用的是ajax请求action那么,不一定能够出现下载页面,但是我没有验证,因为以前我做过的是poi导出excel时用ajax请求action时不行,所以最好不要用ajax请求action)
[java]viewplaincopy/***导出数据*@param"excel"导出文件文件格式*@param"intentpro2.jasper"ireport编译生成的.jasper文件*@paramalllist需要导出的数据的list值*@paramfianceInfo当导出是默认的文件名称*@returnString*/publicStringexportexcel(){JasperHelper.exportmain("excel","intentpro2.jasper",alllist,"fianceInfo");returnSUCCESS;}
②JasperHelper类
[java]viewplaincopyimportjava.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;importorg.apache.log4j.Logger;importorg.apache.struts2.ServletActionContext;importorg.jfree.util.Log;importcom.opensymphony.xwork2.ActionContext;importmon.dao.impl.BaseDaoImpl;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;publicclassJasperHelper{privatestaticLoggerlogger=Logger.getLogger(JasperHelper.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.jar*2)在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"),"ISO8859_1");response.setHeader("Content-disposition","attachment;filename="+fileName);ServletOutputStreamouputStream=response.getOutputStream();JasperExportManager.exportReportToPdfStream(jasperPrint,ouputStream);ouputStream.flush();ouputStream.close();}/***导出html*/privatestaticvoidexportHtml(JasperPrintjasperPrint,StringdefaultFilename,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,JRException{response.setContentType("text/html");ServletOutputStreamouputStream=response.getOutputStream();JRHtmlExporterexporter=newJRHtmlExporter();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*/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){logger.debug("导出判断Themethod=======export()start.......................");try{JasperReportjasperReport=(JasperReport)JRLoader.loadObject(is);prepareReport(jasperReport,type);JRDataSourceds=newJRBeanCollectionDataSource(datas,false);Mapparameters=newHashMap();//parameters.put("wheresql","andstatus='3'");/*parameters.put("wheresql","");Stringdiver="oracle.jdbc.driver.OracleDriver";Stringurl="jdbc:
oracle:
thin:
@192.168.1.156:
1521:
orcl";Stringusername="qqwcrm0625";Stringpassword="qqwcrm";ReportDataSourcedatasource=newReportDataSource();datasource.setDiver(diver);datasource.setUrl(url);datasource.setUsername(username);datasource.setPassword(password);Connectioncon=getConnection(datasource);*/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);}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){logger.debug("进入导出Themethod=======exportmain()start.......................");ActionContextct=ActionContext.getContext();HttpServletRequestrequest=(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);HttpServletResponseresponse=ServletActionContext.getResponse();Stringfilenurl=request.getRealPath<spanstyle="color:
#ff0000;">("/ireport/"+jaspername);//jasper文件放在WebRoot/ireport/xx.jasper</span>Filefile=newFile(filenurl);InputStreamis=null;try{is=newFileInputStream(file);}catch(FileNotFoundExceptione){e.printStackTrace();}export(lists,exportType,defaultFilename,is,request,response);}}
③struts配置文件中的配置,没有什么特别的
[html]viewplaincopy<actionname="exportexcel"class="intentProVoList"method="exportexcel"><resultname="success"></result></action>bsp;
四、特别注意:
在ireport中的fields中,各个字段的名称一定要与list中的各
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ireport 导出 excelhtmlpdf 格式 完整 实例