`
longgangbai
  • 浏览: 7372282 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JFreeReport的web报表的实现

阅读更多

         HtmlExampleServlet演示如何通过HTML表格在Web环境下展示JFreeReport定义的表格
  简单报表的HTML展示
JFreeReport提供HtmlProcessor类来将输入的JFreeReport报表变成HTML表格形式,最后通过Servlet的输出通道展示给用户,具体的用法如下例:
 

 

import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.report.JFreeReport;
import org.jfree.report.modules.output.table.base.TableProcessor;
import org.jfree.report.modules.output.table.html.HtmlProcessor;
import org.jfree.report.modules.output.table.html.StreamHtmlFilesystem;
import org.jfree.report.util.Log;





/**
 * 
 * <p>HtmlExampleServlet演示如何通过HTML表格在Web环境下展示JFreeReport定义的表格
 *  简单报表的HTML展示
JFreeReport提供HtmlProcessor类来将输入的JFreeReport报表变成HTML表格形式,最后通过Servlet的输出通道展示给用户,具体的用法如下例:
* 
 * <p>
 *
 * 创建日期 2013-5-13<br>
 * @author  longgangbai<br>
 * @version $Revision$ 2013-5-13
 * @since   3.0.0
 */
public class JFreeReportHtmlServlet extends HttpServlet {
    //
    private static final long serialVersionUID = 1L;

    public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException,
            IOException {
        doPost(request, response);
    }

    public void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException,
            IOException {
        TableProcessor worker;
        // 设置输出页面的Meta信息
        response.setHeader("Content-Disposition", "inline; filename=\"" + "unknown.html" + "\"");
        // 设置页面的输出格式
        response.setHeader("Content-Type", "text/html");
        try {
            // 获取Servlet的输出流
            OutputStream out = response.getOutputStream();
            // 获取HelloWorld中定义的报表
            JFreeReportView jfreeReport =new  JFreeReportView();
            JFreeReport report=jfreeReport.getJFreeReport();
            
            // 将报表和Servlet的输出流作为参数传递给TableProcessor的实例
            final HtmlProcessor processor = new HtmlProcessor(report);
            processor.setFilesystem(new StreamHtmlFilesystem(out));
            worker = processor;
        } catch (Exception e) {
            Log.debug("无法解析报表定义", e);
            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            return;
        }
        try {
            // 输出结果
            worker.processReport();
        } catch (Exception e) {
            Log.debug("输出结果产生错误", e);
            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            return;
        }
    }
}

 

 

动态的JFreeReport报表实现:

import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Point2D;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import org.jfree.report.ElementAlignment;
import org.jfree.report.JFreeReport;
import org.jfree.report.ReportProcessingException;
import org.jfree.report.elementfactory.TextFieldElementFactory;
import org.jfree.report.modules.gui.base.PreviewDialog;
import org.jfree.ui.FloatDimension;

/**
 * 使用JFreeReport生成报表的简单例子,用于演示使用JFreeReport生成报表的一些基本步骤
 * 
 * 本例子中,为了简化操作,报表定义是使用java直接编码
 *
 * @ 作者 : bookman
 */
public class JFreeReportView {
    /**
     * 处理窗口关闭事件
     */
    protected static class CloseHandler extends WindowAdapter {
        public void windowClosing(final WindowEvent event) {
            System.exit(0);
        }
    }

    /**
     * 创建和显示简单的报表
     */
    public JFreeReportView() {
    }

    public JFreeReport getJFreeReport() {
        // 获得创建报表需要用到的数据
        final TableModel data = createData();
        // 获得报表要用到的报表定义内容
        final JFreeReport report = createReportDefinition();
        // 将报表定义和数据结合
        report.setData(data);
        return report;
    }

    public  void viewJFreeReport() {
        try {
            JFreeReport report =getJFreeReport();
            
            // 将生成的报表放到预览窗口中
            final PreviewDialog preview = new PreviewDialog(report);
            preview.addWindowListener(new CloseHandler());
            preview.pack();
            // 显示报表预览窗口
            preview.setVisible(true);
        } catch (ReportProcessingException e) {
            System.out.println(e);
        }
    }

    /**
     * 创建生成报表需要用到的数据
     *
     * @返回一个TableModel实例
     */
    private TableModel createData() {
        final Object[] columnNames = new String[] {"Column1", "Column2" };
        final DefaultTableModel result = new DefaultTableModel(columnNames, 100);
        int rownum = 0;
        for (; rownum < 100; rownum++) {
            result.setValueAt("say Hello " + rownum + "次", rownum, 0);
            result.setValueAt("say World " + rownum + "次", rownum, 1);
        }
        return result;
    }

    /**
     * 创建一个报表定义
     *
     * @返回一个报表定义实例
     */
    private JFreeReport createReportDefinition() {
        final JFreeReport report = new JFreeReport();
        report.setName("A Very Simple Report");
        /**
         * 定义要显示报表第一列的样式
         */
        TextFieldElementFactory factory = new TextFieldElementFactory();
        factory.setName("T1");
        factory.setAbsolutePosition(new Point2D.Float(0, 0));
        factory.setMinimumSize(new FloatDimension(150, 20));
        factory.setColor(Color.black);
        factory.setHorizontalAlignment(ElementAlignment.LEFT);
        factory.setVerticalAlignment(ElementAlignment.MIDDLE);
        factory.setNullString("-");
        factory.setFieldname("Column1");
        report.getItemBand().addElement(factory.createElement());
        /**
         * 定义要显示报表第二列的样式
         */
        factory = new TextFieldElementFactory();
        factory.setName("T2");
        factory.setAbsolutePosition(new Point2D.Float(200, 0));
        factory.setMinimumSize(new FloatDimension(150, 20));
        factory.setColor(Color.black);
        factory.setHorizontalAlignment(ElementAlignment.LEFT);
        factory.setVerticalAlignment(ElementAlignment.MIDDLE);
        factory.setNullString("-");
        factory.setFieldname("Column2");
        report.getItemBand().addElement(factory.createElement());
        /**
         * 返回一个报表定义的实例
         */
        return report;
    }

}

 

分享到:
评论

相关推荐

    JFreeReport web报表 源代码

    在Web应用中,JFreeReport可以作为服务器端的报表引擎,为用户提供动态生成的报表服务。本资源包含了JFreeReport的源代码,对于想要深入了解其工作原理、进行定制开发或者进行二次开发的开发者来说,具有很高的参考...

    Web报表开发技术-JFreeReport开发技术实例

    总结来说,JFreeReport作为一款强大的Java报表工具,提供了丰富的功能和易用的API,能够帮助开发者快速实现Web报表功能。通过理解JFreeReport的工作原理和实践案例,可以大大提高开发效率,为Web应用增添更多价值。...

    Java的Web报表库

    本篇文章将深入探讨Java Web报表库的概念、其重要性以及jFreeReport作为其中一个库的具体应用。 在Web开发中,报表是一种关键的组件,它能够以结构化的形式展示复杂的数据。Java Web报表库使得开发者能够在服务器端...

    报表工具 jfreereport 额

    - **嵌入式功能**:JFreeReport 可以轻松地集成到 Java 应用程序中,如 Swing 或者 Web 应用,提供报表生成和显示的功能。 - **打印与导出**:生成的报表可以被打印,也可以导出为 PDF、HTML、Excel、CSV 等多种...

    Web报表制作工具OpenReports3.0简介

    ### Web报表制作工具OpenReports3.0:深度解析与应用指南 #### 引言 OpenReports,作为一款开源的Web报表解决方案,凭借其强大的功能、灵活性以及易用性,在报表生成与灵活调度方面表现卓越。它支持多种开源报表...

    JFreeReport小例子

    JFreeReport是一款开源的Java报表生成工具,它允许开发者在Java应用程序中创建复杂的报表,包括表格、图表、图像等多种元素。这个工具以其灵活性和强大的功能著称,可以方便地嵌入到Java应用、Web应用或者Swing应用...

    jfreereport-0.8.5-4.zip

    "jfreereport-0.8.5-4.zip" 是一个包含开源报表设计工具的压缩包,这个工具名为 FineReport。FineReport 是一款专为 IT 专业人士设计的专业报表工具,它采用纯 Java 语言编写,确保了跨平台的兼容性。在报表设计方面...

    JfreeReport Reference

    总的来说,JFreeReport 提供了强大且灵活的报表生成解决方案,对于需要在Java应用中实现复杂报表功能的开发者来说,是一个非常有价值的工具。通过深入研究源码和实践,开发者可以充分利用其特性,为项目带来高效、...

    java/jsp图表生成-JfreeChart套装(源码包,javadoc,安装手册,本人精选简明教程)

    它能够用在Swing和Web等中制作自定义的图表或报表,并且得 到广泛的应用。 JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如 下: 1.JFreeReport :报表解决工具 2....

    jfreechat处理报表简单demo

    在压缩包"Java处理报表"中,可能包含了实现以上步骤的源代码示例,包括创建数据集、构造图表、自定义样式和保存图表等关键函数。你可以通过学习这些代码,理解JFreeChart的工作原理,并将其应用到自己的项目中。 ...

    java生成报表方法简介

    此外,BIRT还提供了JavaScript脚本支持,允许开发者在报表中实现更复杂的逻辑和交互性。 综上所述,Java提供了多种生成报表的方式,每种方法都有其特定的优点和适用场景。开发者可以根据项目的需求、复杂度以及资源...

    Java报表解决方案

    而BIRT则是一个强大的开源报表系统,支持Web和桌面应用,可以生成交互式和可导出的报表。 实现报表设计时,我们通常会采用模板引擎,如Freemarker或Velocity,它们允许将报表布局和数据逻辑分离,提高代码的可维护...

    Java报表开发技术深入解析

    在Java环境中,有许多优秀的报表工具可供选择,例如JFreeReport、iText、BIRT(Business Intelligence and Reporting Tools)、JasperReports等。JasperReports尤其受欢迎,因为它提供了丰富的报表设计功能和强大的...

    推荐6款常用的Java开源报表制作工具.pdf

    JFreeReport (现改名为 Pentaho Reporting)是一个用来生成报表的 Java 类库。它为 Java 应用程序提供一个灵活的打印功能并支持输出到打印机和 PDF 、Excel 、HTML 和 XHTML 、PlainText 、XML 和 CSV 文件中。 ...

    javabaobiao.rar_java 报表_java报表

    如果这是一个源代码文件,它可能包含一个具体的Java报表实现示例,或者是一些数据文件,如CSV或数据库连接信息。 学习Java报表开发需要掌握以下几个核心概念: 1. **数据源**:报表数据通常来自数据库、XML文件、...

    6款常用的Java开源报表制作工具

    - **Web访问**:用户可以直接通过Web浏览器查看报表,无需安装额外软件。 - **多格式支持**:支持多种报表格式,如PDF、HTML和XLS。 - **易于部署**:基于Web的应用程序易于部署和维护。 #### 4. JFreeReport ...

    java 报表制作

    - JFreeReport:一个开源的Java报表库,提供了丰富的图表和报告设计功能。 - JasperReports:广泛应用的报表工具,支持多种数据源,可以生成PDF、HTML、Excel等多种格式的报表。 - BIRT(Business Intelligence ...

    JfreeChart生成报表[定义].pdf

    除了JFreeChart,该公司还提供了JFreeReport(报表解决工具)、JCommon(公共类库)和JFreeDesigner(报表设计工具),形成了一套完整的数据呈现解决方案。JFreeChart不仅支持应用程序和Applet,还支持Servlet和JSP...

    java 报表生成 工具介绍

    4. **JFreeReport**:JFreeReport是一个Java类库,用于生成报表并支持打印及输出到PDF、Excel、HTML等格式。它为Java应用程序提供了灵活的打印和报告功能。 5. **jCharts**:jCharts是一个纯Java的图表生成工具,可...

    推荐6款常用的Java开源报表制作工具.doc

    JFreeReport(现改名为Pentaho Reporting)是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF、Excel、HTML和XHTML、PlainText、XML和CSV文件中。 JFreeReport的主要...

Global site tag (gtag.js) - Google Analytics