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; } }
相关推荐
在Web应用中,JFreeReport可以作为服务器端的报表引擎,为用户提供动态生成的报表服务。本资源包含了JFreeReport的源代码,对于想要深入了解其工作原理、进行定制开发或者进行二次开发的开发者来说,具有很高的参考...
总结来说,JFreeReport作为一款强大的Java报表工具,提供了丰富的功能和易用的API,能够帮助开发者快速实现Web报表功能。通过理解JFreeReport的工作原理和实践案例,可以大大提高开发效率,为Web应用增添更多价值。...
本篇文章将深入探讨Java Web报表库的概念、其重要性以及jFreeReport作为其中一个库的具体应用。 在Web开发中,报表是一种关键的组件,它能够以结构化的形式展示复杂的数据。Java Web报表库使得开发者能够在服务器端...
- **嵌入式功能**:JFreeReport 可以轻松地集成到 Java 应用程序中,如 Swing 或者 Web 应用,提供报表生成和显示的功能。 - **打印与导出**:生成的报表可以被打印,也可以导出为 PDF、HTML、Excel、CSV 等多种...
### Web报表制作工具OpenReports3.0:深度解析与应用指南 #### 引言 OpenReports,作为一款开源的Web报表解决方案,凭借其强大的功能、灵活性以及易用性,在报表生成与灵活调度方面表现卓越。它支持多种开源报表...
JFreeReport是一款开源的Java报表生成工具,它允许开发者在Java应用程序中创建复杂的报表,包括表格、图表、图像等多种元素。这个工具以其灵活性和强大的功能著称,可以方便地嵌入到Java应用、Web应用或者Swing应用...
"jfreereport-0.8.5-4.zip" 是一个包含开源报表设计工具的压缩包,这个工具名为 FineReport。FineReport 是一款专为 IT 专业人士设计的专业报表工具,它采用纯 Java 语言编写,确保了跨平台的兼容性。在报表设计方面...
总的来说,JFreeReport 提供了强大且灵活的报表生成解决方案,对于需要在Java应用中实现复杂报表功能的开发者来说,是一个非常有价值的工具。通过深入研究源码和实践,开发者可以充分利用其特性,为项目带来高效、...
它能够用在Swing和Web等中制作自定义的图表或报表,并且得 到广泛的应用。 JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如 下: 1.JFreeReport :报表解决工具 2....
在压缩包"Java处理报表"中,可能包含了实现以上步骤的源代码示例,包括创建数据集、构造图表、自定义样式和保存图表等关键函数。你可以通过学习这些代码,理解JFreeChart的工作原理,并将其应用到自己的项目中。 ...
此外,BIRT还提供了JavaScript脚本支持,允许开发者在报表中实现更复杂的逻辑和交互性。 综上所述,Java提供了多种生成报表的方式,每种方法都有其特定的优点和适用场景。开发者可以根据项目的需求、复杂度以及资源...
而BIRT则是一个强大的开源报表系统,支持Web和桌面应用,可以生成交互式和可导出的报表。 实现报表设计时,我们通常会采用模板引擎,如Freemarker或Velocity,它们允许将报表布局和数据逻辑分离,提高代码的可维护...
在Java环境中,有许多优秀的报表工具可供选择,例如JFreeReport、iText、BIRT(Business Intelligence and Reporting Tools)、JasperReports等。JasperReports尤其受欢迎,因为它提供了丰富的报表设计功能和强大的...
JFreeReport (现改名为 Pentaho Reporting)是一个用来生成报表的 Java 类库。它为 Java 应用程序提供一个灵活的打印功能并支持输出到打印机和 PDF 、Excel 、HTML 和 XHTML 、PlainText 、XML 和 CSV 文件中。 ...
如果这是一个源代码文件,它可能包含一个具体的Java报表实现示例,或者是一些数据文件,如CSV或数据库连接信息。 学习Java报表开发需要掌握以下几个核心概念: 1. **数据源**:报表数据通常来自数据库、XML文件、...
- **Web访问**:用户可以直接通过Web浏览器查看报表,无需安装额外软件。 - **多格式支持**:支持多种报表格式,如PDF、HTML和XLS。 - **易于部署**:基于Web的应用程序易于部署和维护。 #### 4. JFreeReport ...
- JFreeReport:一个开源的Java报表库,提供了丰富的图表和报告设计功能。 - JasperReports:广泛应用的报表工具,支持多种数据源,可以生成PDF、HTML、Excel等多种格式的报表。 - BIRT(Business Intelligence ...
除了JFreeChart,该公司还提供了JFreeReport(报表解决工具)、JCommon(公共类库)和JFreeDesigner(报表设计工具),形成了一套完整的数据呈现解决方案。JFreeChart不仅支持应用程序和Applet,还支持Servlet和JSP...
4. **JFreeReport**:JFreeReport是一个Java类库,用于生成报表并支持打印及输出到PDF、Excel、HTML等格式。它为Java应用程序提供了灵活的打印和报告功能。 5. **jCharts**:jCharts是一个纯Java的图表生成工具,可...
JFreeReport(现改名为Pentaho Reporting)是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF、Excel、HTML和XHTML、PlainText、XML和CSV文件中。 JFreeReport的主要...