使用Jasperreport作为报表控件开发胖客户端报表应用

Java使用JasperReports绘制模板并生成PDF JasperReoprts绘制模板并使用java填充数据,生成PDF文件。 解决PDF生成时中文字体不显示问题 包含生成代码。 阅读详情

提示:在有些板块,文中的图片看不到,建议到我的blog浏览文章:http://blog.youkuaiyun.com/jemlee2002/
文章将会涉及3个方面的内容:

第一部分:使用iReport制作报表的详细过程(Windows环境下)

第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用

第三部分:使用Jasperreport作为报表控件开发Web报表应用

1、概述

我们对第一部分的内容做个简要的回忆,第一部分主要是介绍使用iReport如何制作一个数据报表,我认为文章比较详细的介绍“如何从零到满足大部分需求报表出现”。但是文中没有涉及Jasperreport的任何内容,目的是让你纯粹的理解如何做报表,因为做报表和把报表内嵌到应用程序编程是可以分工的,便于整合也便于分解。

我们知道iReport是一个Jasperreport的前端开发工具,iReport用来制作和预览报表,为应用使用报表提供足够的前端支持。现在简要的介绍Jasperreport是如何工作的,这样你可以更好的理解iReport是如何帮助Jasperreport实现前端的工作,其实这些工作在我们看来就是“脏活”,为什么呢?看看下面的资料就知道了。


        通过上图你大概已经明白Jasperreport的工作原理了。首先是要有一个XML文件(一般是以jrxml后缀),那么这个XML文件从那里来呢?做什么用呢? 这个XML文件就是报表的定义文件,整个报表的每一个细节都在这个XML文件之中定义,一个简单报表的xml文件就有几百行,你可以手工编辑这个XML文件(一行一行,一段一段的编辑吧――这就是所谓的“脏活”)。如果是手工制作这个XML文件,单从效率上考虑就不允许,特别是现在很多应用系统的开发时间变得越来越紧张,总是会在时间上出问题。节省时间最好的办法就是充分的利用自动化工具,詹姆斯.马丁的软件工程思想也是反复的强调过程的自动化,如何做到自动化呢?就是充分的利用自动化工具集成到开发流程,说了一大堆不就是为了说要用iReport来做报表吗!这是我们第一部分已经完成的工作,但是这里重要的是理解Jasperreport的工作原理。

2、结合Jbuilder开发胖客户端报表应用

2.1、建立Application

参考Jbuilder有关资料。只要是普通Window窗口应用即可。

2.2、引入JasperReports需要的库文件

通过jbuilder9【Tool】-【configure Libraries】-按最左边的【New】-输入一个名称,比如Report-【add】按钮,导航到iReport的lib目录,把lib目录里面的所有文件引入。如图:

 

按两次OK回到Jbuilder的开发界面。

2.3、向工程添加Report系列库文件

通过右击工程,选择【properties】-【paths】Label-【Required Libraries】Label-【Add】按钮-选择“Report”-按两次OK回到Jbuilder的开发界面。这样就添加完成了需要的库文件了。这么做是比较理想的,但是报表运行时可能不需要iReport的lib下所有的jar文件。

2.4、在主界面上添加需要的组件

在主Frame添加一个Button和一个Label以及一个TextBox,当然你也可以通过创建菜单连接,如图:

 

这个窗体时用来做测试用的,实际的界面可能很复杂,其中的TextBox就是为报表的变量做准备的。这里填写的值就是要传递给报表的变量,也就是第一部分定义的带$P{}符号的变量,程序会把他们对应起来。Button的单击事件代码如下:

/**

   * RptDialog对话框是用来承载报表的显示。

   * @param e

   */

  void jButton1_actionPerformed(ActionEvent e) {

        //请创建一个对话框类RptDialog

     RptDialog dlg = new RptDialog(this.jGroupID.getText());

     Dimension dlgSize = dlg.getPreferredSize();

     Dimension frmSize = getSize();

     Point loc = getLocation();

     dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,

                     (frmSize.height - dlgSize.height) / 2 + loc.y);

     dlg.setModal(true);

     dlg.pack();

     dlg.show();

  }

RptDialog是接下来制作的一个Dialog对象,通过Jbuilder新建一个Dialog对象并命名RptDialog。RptDialog的代码如下:

import java.awt.*;

import javax.swing.*;

import dori.jasper.engine.*;

import dori.jasper.view.*;

import dori.jasper.engine.util.JRLoader;

import java.sql.Connection;

import java.io.File;

import java.util.Map;

import java.util.HashMap;

import mytest.trac.CommectionDB;

/**

 * <p>Title: RptDialog </p>

 * <p>Description: 报表承载对话框</p>

 * <p>Copyright: Copyright (c) 2004</p>

 * <p>Company: *****</p>

 * @author 李克喜

 * @version 1.0

 */

public class RptDialog extends JDialog {

  JPanel ReportPan = new JPanel();

  BorderLayout borderLayout1 = new BorderLayout();

  //Bug项目名称

  String proname = "";

  //显示报表需要的控件

  JRViewer jrview;

  public RptDialog(String GroupID) {

    proname = GroupID;

    try {

      jbInit();

      pack();

    }

    catch (Exception ex) {

      ex.printStackTrace();

    }

  }

  private void jbInit() throws Exception {

    ReportPan.setLayout(borderLayout1);

    getContentPane().add(ReportPan);

    //装载报表,在Jbuilder工程的目录创建一个Reports文件夹,并把报表的jasper文件搁置在该文件夹。

    String reportPath = System.getProperty("user.dir") + "//Reports// BugsRpt.jasper";

    JasperReport jasperReport =

(JasperReport) JRLoader.loadObjectFromLocation(reportPath);

    //创建数据库的连接,参考java的JDBC编程资料创建连接方式

    CommectionDB conndb = new CommectionDB();

    //注意:这个连接要求与制作报表时使用的连接一致

    Connection conn = conndb.getDbConnection();

    //报表配置参数,前文提过的SQL语句的Where条件参数就是与这里对应。
  //条件的值可能是通过多种方式得到的,比如上一个页面传递过来的

    Map parameters = new HashMap();   

    //ProjectName就是iReport的变量$P{ProjectName}的名称,参考第一部分的5.6添加参数和使用参
proname就是从界面上获取的值。

 parameters.put("ProjectName ", proname);  

 JasperPrint jasperPrint =

           JasperFillManager.fillReport(

           jasperReport,

           parameters,

           conn

    );

   //装载过程,注意其中的红体字部分

   jrview = new dori.jasper.view.JRViewer(jasperPrint);

   ReportPan.setLayout(borderLayout1);

   ReportPan.setPreferredSize(new Dimension(800, 600));

   getContentPane().add(ReportPan, BorderLayout.CENTER);

   ReportPan.add(jrview,null);

  }

}

到这里,所有需要设置和编程的工作基本完成了。

3、运行

确定数据库已经启动了,在JBuilder运行应用程序。在TextBox输入有意义的组值,比如“BugWin系统”,这是我的测试值,实际情况是根据你的需要来确定的。单击Button,系统会弹出对话框,运行结果和第一部分6.2、预览报表结果一致。

4、总结

随着技术的进步,应用环境的不断变化,胖客户端的应用可能会逐渐退出主流,但是它的存在是必要的。所以我要写胖客户端的应用方面的报表使用技术。文中简要明了的介绍了如何使用Jasperreport编程报表程序。希望对你有一点帮助。

 

转自:http://blog.youkuaiyun.com/jemlee2002/archive/2004/10/08/127745.aspx

【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等) TextField是一个基础组件,它表示的是一个文本域,可以设置一个表达式对象,例如:Parameters、Fields等,也就是说,TextField文本域组件可以在程序运行过程中,动态的显示文本内容。StaticText是Jasper中的一个基础组件,用于表示静态文本内容,它表示的内容在程序运行过程中是不可以改变的,在制作模板文件的时候,就已经固定了文本内容。Subreport是子报表组件,它可以在一张报表中嵌入另一个报表,从而实现父子报表的功能,父子报表我在之前的文章中有介绍了,可以看下这篇文章【 阅读详情

相关推荐

jasperReport自定义javabean数据源实例

实例中通过利用自定义javabean数据源实现报表实例,其中有代码和文档,还有项目中所需要的jar包,不需要重新下载jasper获取jar包

第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用

提示:在有些板块,文中的图片看不到,建议到我的blog浏览文章:http://blog.youkuaiyun.com/jemlee2002/文章将会涉及3个方面的内容:第一部分:使用iReport制作报表的详细过程(Windows环境下)第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用第三部分:使用Jasperreport作为报表控件开发Web报表应用 1、概述我们对

【名剑】黑客 专栏 1万+

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

冲击10w 1万+

Jasper Report之自定义组件(Custom Visualization)环境配置

Jasper Report提供的功能已经足够强大了,但是仍不能完全对接客户的需求,因此需要我们自定义组件完成对我们Report的设计,开发前的环境配置还是个麻烦事。。。 系统:Linux IDE:Jasper Studio(Version:6.3) Server:Jasper Server(Version:6.3) Jasper Report虽然支持自定义组件,但是在我们使用的版...

a15888240025的博客 834

保姆级教程:用GEE(Google Earth Engine)复现CASA模型计算NPP,附完整数据集清单与Python代码

本文提供了一份详细的保姆级教程,指导如何使用GEE(Google Earth Engine)复现CASA模型计算NPP(净初级生产力)。教程涵盖环境准备、关键数据集获取与处理、Python代码实现全流程,以及结果验证与常见问题解决方案,帮助生态学研究者高效完成NPP计算。

weixin_28707365的博客 333

SAP财务凭证实战:如何用Coding Block快速添加客户化字段(附ABAP代码)

本文详细介绍了在SAP财务凭证中利用Coding Block技术快速添加客户化字段的完整流程,包括技术架构解析、实战配置步骤(OBC4/OB41)及ABAP增强开发。通过案例演示如何高效扩展字段(如增长曲线类型),实现全流程集成且无需修改数据表,显著提升财务凭证的灵活性和可追溯性。

weixin_29271263的博客 225

jasperReports生成动态多级表头报表

通过上述一些基本的使用说明与演示,基本上可以满足复杂的多级表头,如果有动态列需求如根据权限判断动态的隐藏某些列,也可根据演示去实现。对于另一种通过Connection的方式执行sql的方式绑定数据源,可以自己进行尝试。然后提供一个我自己写的一个简单工具类,可以满足接口调用返回pdf或者excel文件流,如果有多sheet的excel输出可以自己根据演示代码进行实现。/*** jasperReports 导出工具类**//**

quecongcong的博客 4807

Unity3d实现红外热成像效果

1.将需要在红外图像中高亮的物体设置到图层PostProcessing。 2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。 3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。 4.新建一个相机Camera2,这个相机用于显示其他物体。 接下来将CameraHigh

zouxin_88的专栏 8327

第三部分:使用Jasperreport作为报表控件开发Web报表应用

文章将会涉及3个方面的内容:第一部分:使用iReport制作报表的详细过程(Windows环境下)第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用第三部分:使用Jasperreport作为报表控件开发Web报表应用1、概述如何实现发Web报表有很多的选择,自定义CSS+HTML或是XSLT+XML或是其他控件,特别是支持图表的控件,比如:jfreechar

【名剑】黑客 专栏 1万+

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1766

【数据集7】全球人类住区层GHSL数据详解

全球人类住区层GHSL数据详解

WW、forever的博客 2252

使用Jasperreport作为报表控件开发Web报表应用

<br />第三部分:使用Jasperreport作为报表控件开发Web报表应用<br />文章将会涉及3个方面的内容:<br />第一部分:使用iReport制作报表的详细过程(Windows环境下)<br />第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用<br />第三部分:使用Jasperreport作为报表控件开发Web报表应用1、概述<br />如何实现发Web报表有很多的选择,自定义CSS+HTML或是XSLT+XML或是其他控件,特别是支持图表的控件,比如:jfree

从零开始 1199

JMeter 中实现 100 个用户在 3 秒内并发登录

通过以上配置,你可以在 JMeter 中实现 100 个用户在 3 秒内并发登录

南开大学 | 10 年 + 软件研发与测试实战 | 现任企业质控负责人 | 专注端到端交付质量 1680

使用Jasperreport作为报表控件开发Web 报表应用

概述如何实现发Web报表有很多的选择,自定义CSS+HTML或是XSLT+XML或是其他控件,特别是支持图表的控件,比如:jfreechart。本文作为Web报表的一种实现方式,建议你使用Jasperreport作为报表控件,第一、二部分已经对制作报表和开发胖客户端报表应用做了介绍,其实有很多的文章可以参考实现第三部分的内容,不止是我写的这篇文章。数据连接建立这里有详细的介绍数据库的连接过程。拷贝

ft0905的专栏 1173

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向

输入可以是任何形式的时间序列数据,其中表示时间。例如传感器读数、金融市场数据、语音信号等。

allein_STR的博客 2611

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Jasperreport+iReport制作报表

ireport

从零开始 2408

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

iReport制作报表

文章将会涉及3个方面的内容: 第一部分:使用iReport制作报表的详细过程(Windows环境下) 第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用 第三部分:使用Jasperreport作为报表控件开发Web报表应用 第一部分:使用iReport制作报表的详细过程(Windows环境下) 1、前言 在网络上可以搜索到很多使用iReport和Jasperreport...

iteye_659的博客 268

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用iReport制作报表的详细过程(Windows环境下)

文章将会涉及3个方面的内容: 第一部分:使用iReport制作报表的详细过程(Windows环境下) 第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用 第三部分:使用Jasperreport作为报表控件开发Web报表应用 1、前言 在网络上可以搜索到很多使用iReport和Jasperreport配合实现各种报表任务的文章,但是我觉得很少有一篇(...

jc_dreaming2的博客 317

第一部分:使用iReport制作报表的详细过程(Windows环境下)

提示:在有些板块,文中的图片看不到,建议到我的blog浏览文章:http://blog.youkuaiyun.com/jemlee2002/文章将会涉及3个方面的内容: 第一部分:使用iReport制作报表的详细过程(Windows环境下) 第二部分:使用Jasperreport作为报表控件开发胖客户端报表应用 第三部分:使用Jasperreport作为报表控件开发Web报表应用 1、前言...

aimengge6193的博客 239
上一篇: Jasperreport+iReport制作报表
下一篇: 使用Jasperreport作为报表控件开发Web报表应用
echo7L
博客等级 码龄16年 5粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值