`

ireport导出

阅读更多

引用nickireport导出各种格式(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";

 

}

  • 大小: 38.7 KB
分享到:
评论

相关推荐

    ireport导出pdf和word文档实例

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

    ireport导出报表.pdf

    下面,我们将详细讲解iReport导出报表为PDF所涉及的关键点。 1. iReport报表设计: iReport报表设计过程中,首先需要一个jasper文件(.jrxml),这是一个XML格式的报表设计模板。在这个模板中,可以定义报表的布局...

    iReport导出Excel公式

    iReport是一款功能强大的开源报表设计工具,它允许用户创建复杂的报告,并支持导出到多种格式,包括Excel。本篇将详细讲解如何在iReport 5.1.0版本中导出包含Excel公式的报表,以求和公式为例。 首先,我们需要理解...

    Ireport导出excel的Java代码

    根据提供的文件信息,我们可以总结出以下相关知识点: ### 一、IReport简介 IReport 是一个开源的报表设计工具,可以方便地制作各种...通过以上步骤和注意事项,可以有效地利用 IReport 和 Java 实现报表的导出功能。

    ireport导出使用的包

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

    ireport导出pdf文件中文问题

    本文将深入探讨"ireport导出pdf文件中文问题"这一主题,以及如何解决这类问题。 首先,我们要理解这个问题出现的原因。在Java环境中,iReport使用了iText库来生成PDF文件。iText是一个功能强大的PDF库,但默认情况...

    ireport导出报表[参照].pdf

    【ireport导出报表技术详解】 ireport是一款强大的报表设计工具,主要用于生成PDF、HTML、Excel等格式的报表。在软件开发中,ireport能够帮助开发者高效地设计和导出复杂的业务报表。以下将详细解释ireport导出报表...

    ireport导出excel的代码

    在Java开发中,IReport是一款常用的报表设计工具,它可以与JasperReports库配合,用于创建复杂的报告并导出成各种格式,包括Excel。本篇文章将详细介绍如何使用IReport和Java代码来导出Jasper文件为Excel。 首先,...

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

    标题 "Ireport Excel带图片导出之可拉伸图片不失真" 涉及到的是在使用IReport工具进行报表设计时,如何将带有图片的数据导出到Excel文件,并且在图片被拉伸时保持其清晰度和不失真的技术问题。在实际应用中,这通常...

    springMVC+ireport导出excl

    整合SpringMVC和iReport的目的是为了在Web应用程序中方便地生成和导出Excel报表。以下是一个基本的步骤流程: 1. **配置SpringMVC**:首先,你需要在SpringMVC的配置文件中声明对iReport的支持。这通常包括添加...

    IReport导出模板制作步骤

    IReport是一款强大的报表设计工具,它是JasperReports项目的一部分,用于创建复杂的报表模板。这个教程主要针对初学者,旨在帮助他们理解如何通过IReport来制作模板,特别适用于那些对IReport使用感到困惑的用户。 ...

    ireport导出excel 部分源码

    根据提供的信息,我们可以深入探讨如何使用iReport工具及其Java API来导出Excel文件,并进一步讨论相关的其他导出功能,如PDF、HTML和Word文档的生成。 ### iReport简介 iReport是一款开源报表设计工具,主要用来...

    java+ireport 例子 导出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, `...

    ireport5.6 导出excel,pdf

    标题 "ireport5.6 导出excel,pdf" 指的是使用iReport 5.6版本创建和导出报表到Excel和PDF格式的过程。iReport是一款强大的报表设计工具,它与Java Report Design Language (JRDJ) 和JavaServer Pages (JSP) 配合使用...

    IReport教程(Word版本)

    **IReport教程(Word版本)** IReport是一款强大的开源报表设计工具,它是JasperReports库的一部分,用于创建复杂的报表设计,这些设计可以被Java应用程序、Web应用或服务器平台使用。本教程将指导你如何利用...

    iReport+java导出pdf/byte[]

    标题 "iReport+Java 导出 PDF/byte[]" 指的是使用 iReport 工具结合 Java 语言来生成 PDF 文件并将其以字节数组(byte[])的形式处理。iReport 是一个开源的报表设计工具,常用于 JasperReports 库,能够帮助开发者...

    java结合iReport开发报表并以pdf形式导出所需要jar

    在这个场景下,我们将探讨如何使用Java与iReport协作开发报表,并将结果导出为PDF格式。为了实现这一目标,我们需要一系列的jar包,这些jar包在你提供的压缩文件中应该已经包含。 首先,iReport本身是基于...

    ireport利用jsp导出excel&pdf;报表源代码

    【描述】:“本人验证过的jsp代码,ireport导出pdf excel报表” 在Java Web开发中,生成各种类型的报表是常见的需求,例如用于数据分析、业务统计或者数据导出等。iReport是一款强大的开源报表设计工具,它基于...

    iReport 4.0.1 + JasperReport 导出Html和PDF报表例子源码

    总的来说,这个例子涵盖了报表设计、数据绑定、以及通过iReport导出到HTML和PDF的关键技术,对于想要深入理解和应用JasperReports及iReport的开发者来说,是一个有价值的资源。通过分析和运行提供的源代码,你可以更...

    iReport输出pdf涉及的jar

    iReport是一款功能强大的开源报表设计工具,它允许用户通过直观的拖放界面创建复杂的报告,并支持多种输出格式,包括PDF。当我们在iReport中尝试生成PDF文件时,可能会遇到汉字无法正常显示的问题。这通常是因为缺少...

Global site tag (gtag.js) - Google Analytics