`
bean-woo
  • 浏览: 131985 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

iReport,jasperReport报表打印

阅读更多

package com.appdev.bsf.server.servlet;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
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.JRPdfExporter;
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;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.appdev.bsf.common.client.datasource.DictionaryGwtRpcService;

@SuppressWarnings("serial")
public class ReportServlet extends HttpServlet {
    private DictionaryGwtRpcService service;

    @Override
    public void init() throws ServletException {
        ServletContext application;
        WebApplicationContext wac;
        application = getServletContext();
        wac = WebApplicationContextUtils.getWebApplicationContext(application);
        service = (DictionaryGwtRpcService) wac.getBean("dictionaryGwtRpcServiceImpl");
    }

    @SuppressWarnings("deprecation")
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        JasperReport jReport = null;
        try {
            String jasperName = "";
            Map<String, Object> filter = new HashMap<String, Object>();

            String clsUrl = request.getParameter("clsUrl");
            String type = request.getParameter("type");
            String map = request.getParameter("map");

            if (clsUrl != null && !"".equals(clsUrl)) {
                String[] jasperNames = clsUrl.split("\\.");
                jasperName = jasperNames[jasperNames.length - 1];
            }

            if (map != null) {
                map = map.replace("{", "").replace("}", "");
                String maps[] = map.split(",");
                for (String str : maps) {
                    String[] obj = str.split("=");
                    if (obj.length == 2) {
                        filter.put(obj[0], obj[1]);
                    }
                }
            }
            if (type == null) {
                type = "Excel";
            }

            List<?> list = service.fetch(clsUrl, filter);
            if (list.size() > 0) {

                Map<String, String> paramMap = new HashMap<String, String>();
                paramMap.put("ReportTitle", jasperName);

                String filePath = request.getRealPath("/report/") + jasperName + ".jasper";
                File file = new File(filePath);
                InputStream is = new FileInputStream(file);
                JasperPrint jasperPrint = null;
                jReport = (JasperReport) JRLoader.loadObject(is);
                JRBeanCollectionDataSource jrDataSource = new JRBeanCollectionDataSource(list);

                jasperPrint = JasperFillManager.fillReport(jReport, paramMap, jrDataSource);

                OutputProcessed ouputProcessed = OutputProcessed.processOutput(type);
                JRAbstractExporter exporter = ouputProcessed.exporter;
                byte[] reportAsBytes;
                ByteArrayOutputStream baos = new ByteArrayOutputStream();

                exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);

                exporter.exportReport();

                reportAsBytes = baos.toByteArray();

                response.reset();
                // Writes the bytes[] in the response
                response.setContentType(ouputProcessed.contentType);
                response.setHeader("Content-Disposition", "inline; filename=" + jasperName
                        + ouputProcessed.fileType);
                response.setContentLength(reportAsBytes.length);

                ServletOutputStream s = response.getOutputStream();
                s.write(reportAsBytes, 0, reportAsBytes.length);

                s.flush();
                s.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

class OutputProcessed {
    public JRAbstractExporter exporter;
    public String contentType;
    public String fileType;

    public static final String PDF = "PDF";
    public static final String HTML = "HTML";
    public static final String EXCEL = "Excel";
    public static final String RTF = "RTF";

    public static OutputProcessed processOutput(String output) {
        OutputProcessed result = new OutputProcessed();
        if (output.equals(PDF)) {
            result.contentType = "application/pdf";
            result.exporter = new JRPdfExporter();
            result.fileType = ".pdf";
        } else if (output.equals(HTML)) {
            result.contentType = "text/html";
            result.exporter = new JRHtmlExporter();
            result.exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
            result.fileType = ".html";
        } else if (output.equals(EXCEL)) {
            result.contentType = "application/vnd.ms-excel";
            result.exporter = new JRXlsExporter();
            result.exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
            result.exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
                    Boolean.TRUE);
            result.fileType = ".xls";
        } else {
            result.contentType = "application/rtf";
            result.exporter = new JRRtfExporter();
            result.fileType = ".rtf";
        }
        return result;
    }
}

分享到:
评论

相关推荐

    iReport 报表、子报表、主从报表、合计、实例解析

    iReport 报表、子报表、主从报表、合计、实例解析1....4.2.2. iReport子报表SubReport(例:批量打印报表)... 13 4.2.3. iReport table类型的表单(例:押金报表)... 21 4.2.4. Dorado7中iReport的配置... 24

    struts2+ireport+jasperreport报表设计简单示例

    使用ireport和struts2进行报表...java工程的lib里包含丰富的jar包,且很多都是从各个网站下载的最新版本,文件夹内还包含一些ireport和jasperreport文档,适合刚入门学习报表的作参考。没分了,收个友情分1分,勿怪。

    ireport+jasperreport开发中问题解决方案

    50.iReport中的子报表如何实现根据其上部是否有打印数据而变打印位置? 49.iReport中当单元格中的文字出现换行跨页的情况,如何保证换行的字段能够正常显示,并且保证换行后同行的高度保持一致? 48.内嵌函数的使用 ...

    JasperReport+iReport报表开发手册.zip

    它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。JasperReports 完全是由 Java 写成,可以应用于 Java 的应用 程序,包括 J2EE,Web 应用程序中生成动态内容,它主要目的是辅助...

    jasperreport ireport中文指南

    软件说明: jasperreport 是一款报表打印组件,是开放源代码组织sf.net 中的一个java 报表打印工 程,在我写这篇文章时,jasperreport 的最新版本是0.5.2 版,jasperreport 的最新版本可以 从...

    Struts2.0+JasperReport+IReport+Oracle 报表开发 2/3

    Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题

    ireport固定表头隐藏列

    本报表在jasperreports-5.6.0基础上增加以下功能; 1、 表头固定 2、 列的隐藏及显示 3、 列的固定 示例代码可正常运行、本代码为非正式版

    ireport & jasperreport

    JasperReport 是一款报表打印组件,是开放源代码组织sf.net 中的一个java 报表打印工程,...JasperReport 适合用来做WEB 应用程序与Java Application 的报表打印组件,而且关键的一点是:JasperReport 是免费的!

    最新完整版完美运行JasperReport+ireport报告预览Sqlserver数据库带库带表脚本

    iReport是用于定义JasperReport报表的可视化工具,JasperReport使用XML来定义一个报表的结构,iReport可以让用户很方便地定义报表,而不需要手工去写这些XML文件。 iReport是为JasperReports设计的强大的,直观的,...

    java报表(jasperreport_ireport+struts2)

    jasperreport_ireport+struts2打印报表

    ireport5.5.2

    iReport是用于定义JasperReport报表的可视化工具,JasperReport使用XML来定义一个报表的结构,iReport可以让用户很方便地定义报表,而不需要手工去写这些XML文件。 iReport是为JasperReports设计的强大的,直观的,...

    jasperReports+iReport3.0.0生成打印文件.doc

    jasperReports+iReport3.0.0 生成各种格式的报表文件 以及iReport3.0的操作

    JasperReport所需要的jar文件

    java使用iReport打印报表依赖的jar包

    JasperReport浏览器输出PDF为空白页的解决方案

    NULL 博文链接:https://donald-draper.iteye.com/blog/2301345

    ireport 其主要作用是用来以可视化的方式设计

     生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报  表设计工具,iReport 的出现正好弥补了这个缺陷。本文写作时的iReport 的最新版本是2.0.5,  是为JasperReports设计的...

    JasperReport使用手册 - JasperReport - 软件开发 - 深度开源.html

    是一款报表打印组件,是开放源代码组织 中的一个 报表打印工程, JasperReport sf.net 由于 本身并未提供很好的可视化报表设计工具, JasperReport 在之后推出了 iReport ,作为 报表模版编辑软件,具有以下突出的...

    JasperReport与Java程序,导出不同格式的报表,包括pdf,excel,html,报表打印等功能

    使用开源报表jasperReport,并结合irport前端报表设计器,使用Java程序实现报表的不同格式的导出,包括pdf,excel,html,打印预览等功能,程序包含所需Jar包,并有详细的注释

    ireport300

    iReport 也是开源组织sf.net 中的一款免费软件,其主要作用是用来以可视化的方式设计,生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报,表设计工具,iReport 的出现正好弥补...

    iReport-4.0.2源代码

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。这个工具允许用户可视化编辑包含charts,图片,子报表等的复杂报表。iReport 还集成了JFreeChart图表制作包。允许用户可视化地编辑...

    iReport-5.1.0-windows-installer.rar

    生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。本文写作时iReport 的版本是4.7.1,是为JasperReports设计的强大的,直观的,...

Global site tag (gtag.js) - Google Analytics