- 浏览: 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)在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);
}
}
相关推荐
- "iReport导出pdf和word"这个压缩包文件很可能包含了`iReport`设计的报表模板(.jrxml文件)以及生成的PDF和Word示例文件。 - 分析这些文件可以帮助理解布局、数据绑定和导出过程。 通过以上的步骤和技巧,你...
IReport是一款基于Java的开源报表设计工具,它允许开发者创建复杂的报告模板,然后用JasperReports库来生成PDF、HTML、Excel等多种格式的报表。在导出Excel报表时,如果包含图片,可能会遇到图片在单元格中被拉伸或...
iReport是一款由开源社区sf.net提供的免费软件工具,它主要用于通过可视化方式设计并生成JasperReports所使用的报表格式文件。由于JasperReports自身并没有提供一个非常友好的用户界面来支持报表的设计工作,因此...
2. 创建 Excel 文件:使用 Apache POI 生成 Excel 文件,选择报表格式和输出路径。 3. 导出 Excel 文件:使用 Apache POI 导出 Excel 文件。 在 JSP 中可以使用多种方式来导出 PDF 和 Excel 文件。使用 iReport 和 ...
《Ireport导出工具及其依赖库详解》 在IT领域,报表生成是不可或缺的一部分,而Ireport作为一款强大的Java报表设计工具,深受开发者喜爱。它允许用户通过直观的图形界面设计复杂的报表,并能够导出为多种格式,如...
- **导出格式**:可以将报表导出为 PDF、HTML、CSV、XML 等多种格式。 **2. 必需的 jar 包** 对于 jasperReport 4.5.0 版本,以下是一些必需的 jar 包: - jasperreports-4.5.0.jar - groovy-all-1.7.5.jar - ...
- jasperreports.jar:这是JasperReports的核心库,包含了报表渲染、数据填充、PDF、HTML、Excel等多种输出格式的支持。 - ireport-designer.jar:iReport的设计器组件,虽然在运行时并不直接使用,但在开发阶段...
JasperReports是一款开源Java库,它允许开发者创建、设计和导出各种类型的报告,包括PDF、HTML、Excel和Word等格式。 描述中的链接指向了一篇博客文章,尽管没有提供具体的内容,但我们可以根据标题推测,博主可能...
总之,要在JSP中导出PDF和Excel,需要正确配置开发环境,使用iReport设计报表,连接数据源,然后在服务器端使用JasperReports API将报表转换并导出。这涉及到多个库的集成和HTTP响应的设置,确保了用户能够方便地...
标题中提到的"jasperreport导出Html xls PDF doc 格式文档源代码",是指使用JasperReport库将报表转换为这四种常见格式。这些格式各有特点:HTML适合在线查看和分享,XLS适用于电子表格处理,PDF适用于打印和正式...
Java 实现 iReport 转换为 PDF 是一个常见的任务,尤其在企业级应用中,经常需要将报表数据导出为 PDF 格式方便打印或存档。iReport 是一个强大的报表设计工具,它允许用户使用 JavaServer Pages (JSP) 和 ...
Apache POI HSSF和XSSF读写EXCEL总结
JasperReport是一款功能强大且灵活的报表生成工具,它支持多种输出格式,包括PDF、HTML、XML、Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)。作为一个全Java编写的库,JasperReport可以很好地集成到Java...
这些库可以帮助iReport实现更多功能,如导入导出Excel格式的报表,或者使用自定义的模板语言。 6. 示例报表和模板:有时,压缩包会包含示例报表和模板,帮助初学者了解如何使用iReport和JasperReports设计报表。...
7. **结果查看**:内置浏览器可以直接查看生成的报表,并支持以 PDF、HTML 等格式导出。 #### 重要的类 - **`net.sf.jasperreports.engine.design.JasperDesign`**:用于表示报表产生的原始类。 - **`...
iReport 的主要功能是辅助开发者创建复杂的报表布局并将其转换为 JasperReports 可识别的 XML 格式文件。 #### 二、iReport 安装及环境搭建 ##### 2.1 安装 iReport iReport 的安装过程相对简单,这里我们以版本 ...
在使用JasperReports时,你需要依赖一些第三方库,例如:itext-1.3.1.jar用于PDF生成,jfreechart-1.0.0.jar用于图表绘制,poi-2.5.1.jar用于处理Excel数据,mysql.jar用于连接MySQL数据库。这些库在压缩包文件中已...
【标签】:“iReport”是这个话题的核心,它是一个基于Java的报表设计工具,支持JRXML格式,可以导出多种格式的报表,如PDF、HTML、Excel等。它的主要功能包括设计自定义报表模板、数据源配置、参数化报告以及复杂的...