Cell插件在J2EE系统中的应用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
[摘要] 在基于J2EE平台的信息系统中,具有丰富表现能力的Java Applet是界面层的一种重要形式。但Java API对打印的支持比较弱,打印输出复杂的单据和报表需要大量工作。本文介绍的系统通过引入一个ActiveX控件--Cell插件--来解决这个问题。该系统中,由Java Applet完成界面表现,由Cell插件完成打印输出,两者之间通过Sun公司的一套接口API互相通信。
一、Java Applet与Ocx控件的交互
1.1从Java Applet访问Java Script方法和Ocx控件
Sun公司在JDK中提供了一套从Java Applet访问Java Script的API,由此可以实现Java Applet访问HTML页面中的DOM对象的机制。该API以一个Jar文件的形式提供:%JAVA_HOME%\jre\lib\jaws.jar,其中%JAVA_HOME%是你安装JDK的目录。将该jar文件加入到环境变量classpath中,就可以用它实现从Java Applet到Java Script的调用了。下面是一段调用Java Script中的方法的代码实例:
import netscape.javascript.*;
import java.applet.*;
import java.awt.*;
class MyApplet extends Applet {
public void init() {
JSObject win = JSObject.getWindow(this);
JSObject doc = (JSObject) win.getMember("document");
win.call("f", null);
}
}
在上面的代码中,win.call(“f”, null)调用了JavaScript中的方法f()。
1.2从JavaScript访问Java Applet
当使用Java Plugin1.4.x运行Java Applet时,只需把Java Applet中的方法视为Java Plugin这个控件的方法,直接在Java Script中进行调用即可。下面用一个简单的例子进行说明:
(1) 在载入Java Plugin的Object标签中,用参数ID指定一个名字:
<OBJECT ID="MyPlunin" WIDTH=500 HEIGHT=120
CLASSID="CLSID:8AD9C840-044E-11d1-B3E9-00805F499D93">
<PARAM NAME="code" value="MyApplet.class">
...
</OBJECT>
(2) 在HTML页面上增加一个按钮,点击它时从Java Script调用Java Applet中的方法:
<input type="button" name="Button1" value="Start"
onClick="calculate" language="JavaScript">
(3) 假定你的Java Applet是MyApplet.java,它有一个public方法method1(),那么就可以用如下的Java Script代码直接调用该方法:
<SCRIPT language="JavaScript">
function calculate() {
document.. MyPlunin.method1()
}
</SCRIPT>
二、Cell插件简介
华表的Cell插件是一个功能非常类似于Excel的、用于Web开发的ActiveX控件。它可以在Windows的浏览器中显示、编辑、打印表格。
三、系统实现
1.1 系统架构
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1026" style="WIDTH: 4in; HEIGHT: 186pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/firefox1/LOCALS~1/Temp/msoclip1/01/clip_image001.png"><img alt="" hspace="0" src="http://www.csdn.net/develop/article/images/cell_1.jpg" align="baseline" border="0"></imagedata></shape>
图一是系统的配置示意图。由图可见,这是一个典型的三层应用系统。在本系统中,Java Applet和Cell插件部署在Web Server上,在运行时,它们被下载到客户端,运行在浏览器中。
图二是系统的运行示意图。由图可见,运行在客户机上的Java Applet通过Web Server上的Servlet访问应用服务器上的EJB,与后台交互。Java Applet作为表示层,在客户机上显示界面。
当需要打印输出时,Java Applet将数据和显示格式设置到华表插件中,并调用华表插件的打印与览和打印方法,完成打印功能。
<shape id="_x0000_i1025" style="WIDTH: 389.4pt; HEIGHT: 195pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/firefox1/LOCALS~1/Temp/msoclip1/01/clip_image003.png"><img alt="" hspace="0" src="http://www.csdn.net/develop/article/images/cell_2.jpg" align="baseline" border="0"></imagedata></shape>
1.2 用Cell插件实现Java界面的打印
1.2.1在HTML页面上嵌入华表的Cell插件
为了在Applet界面中调用华表的Cell插件,我们首先在HTML页面上隐藏了一个Cell插件:
<OBJECT classid=clsid:3F166327-8030-4881-8BD2-EA25350E574A
id=DCellWeb1 style="HEIGHT: 0px; WIDTH: 0px">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="14902">
<PARAM NAME="_ExtentY" VALUE="6075">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
通过style="HEIGHT: 0px; WIDTH: 0px"指定Cell插件的高度和宽度都为0,从而达到隐藏Cell插件的目的。
1.2.2 在Applet中提供两个调用接口方法
下面是一个Applet的代码实例,其中提供了callCellMethod()和callJavaScriptMethod()两个接口方法,分别可用来调用Cell插件的方法和JavaScript的方法:
public class MyApplet extends javax.swing.JApplet {
private JSObject win = null;
private JSObject cell = null;
public Object callCellMethod(String name, Object[] params) {
return getCell().call(name, params);
}
public Object callJavaScript(String name, Object[] params) {
return getJSwin().call(name, params);
}
private JSObject getCell() {
if (cell == null) {
try {
JSObject doc = (JSObject)getJSwin().getMember("document");
JSObject all = (JSObject)doc.getMember("all");
cell = (JSObject)all.call("item", new Object[]{"DCellWeb1"});
}
catch (Exception e) {
e.printStackTrace();
}
}
return cell;
}
private netscape.javascript.JSObject getJSwin() {
if (win == null) {
win = netscape.javascript.JSObject.getWindow(this);
}
return win;
}
}
通过getCell()这个方法,可以在Java Applet中直接获得用JSObject表示的Cell插件,从而可以直接调用它的方法。例如,在Java Applet中向Cell插件的一个单元格写入数据,可以如下调用:
Integer row = new Integer(1);
Integer column = new Integer(1);
Integer page = new Integer(0);
callCellMethod("SetCellString", new Object[]{column, row, page, “str”});
其中SetCellString是Cell插件提供的接口方法。这样就实现了从Java Applet到华表的Cell插件的调用。
五、结论
在这个应用系统中,我们只利用Cell插件的打印预览和打印两项功能,不用它做屏幕显示。所有打印格式和数据都在Java Applet中准备好,按单元格向Cell插件设置格式和数据,由Cell插件完成分页和打印功能。
这是一种表现与数据分离的方式:Java Applet中只组织打印数据,所有打印的表现工作交给Cell插件完成,因此能够大大降低工作量。
Cell插件除打印功能外,还具有输入、显示、编辑、图表等非常强大的功能,可以制作出非常复杂的报表。利用Cell插件,还可以将数据导出为Excel或PDF等格式的文件。
六、参考文献
1. Cell插件文档:http://www.cellsoft.cc
2. Java Plugin 文档:http://java.sun.com/j2se/1.4.1/docs/guide/plugin/
赵继江
2003年1月
分享到:
相关推荐
内容 Cell 插件的核心文件 包括cell插件 cab分发包 帮助文件 加密狗驱动文件 ...Cell插件的接口均经过精心设计,其代码也经过多次提炼,尽量减小其大小,以适应在Interenet环境中分发。 报表二次开发工具
在IT行业中,开发人员经常需要处理各种插件以增强应用程序的功能。"Cell插件IE&JAVA开发示例"是一个专门针对Web表格应用系统的插件开发教程,它涵盖了两种主要的技术平台:Internet Explorer(IE)浏览器和Java。这...
其中,CELL插件作为其核心组件,能够无缝集成到各种Web应用中,提供丰富的报表设计和交互体验。 二、CELL插件Demo_cellweb解析 1. 设计理念:Demo_cellweb是用友华表CELL插件的演示版本,展示了该插件的核心功能和...
在使用Cell报表插件之前,首先需要将其安装到你的ASP.NET项目中。这通常可以通过NuGet包管理器完成,只需搜索“Cell报表插件”并按照提示进行安装。安装完成后,在Web.config文件中配置必要的连接字符串和授权信息...
这篇文章将深入探讨CELL插件在Java报表系统中的作用、如何引入以及它带来的优势。 首先,我们需要理解什么是CELL插件。CELL插件通常是一个专门为Java报表系统设计的组件,它可能提供了丰富的单元格操作和格式化功能...
Java的类库丰富,支持各种插件系统,如Eclipse和IntelliJ IDEA等流行的IDE都提供了强大的插件机制。 **插件开发流程:** 1. **接口定义:** 插件开发首先需要明确插件应遵循的接口或协议,这些接口定义了插件可以...
Cell 插件用于开发B/S结构程序,使用Asp, Asp.Net, Jsp, VbScript, JavaScript等语言开发,可以在浏览器中直接打印报表(非IE打印),带有国际化数字签名,让用户使用更方便,更安全。 · 具备Cell组件的所有特色...
Cell5.1产品分Cell组件5.1和Cell插件5.1两个姐妹产品,它们是北京用友华表软件技术有限公司在长期开发实践的...Cell插件的接口均经过精心设计,其代码也经过多次提炼,尽量减小其大小,以适应在Interenet环境中分发。
2、将服务器端数据库中的数据显示在客户端的CELL插件中. 方法:连接服务器数据库得到数据,通过Response对象将数据传送到客户端,再利用Cell的编程接口ReadFromBuffer展示在客户端. Cell 插件用于开发B/S结构程序,...
标题中的"CELL插件"指的是在信息技术领域中用于报表处理的一种特定软件插件。这种插件通常被设计来增强电子表格或数据管理工具的功能,使用户能够更有效地创建、编辑和展示复杂的数据报告。"华表插件"可能是国内某款...
在B/S系统中,这种功能通常是至关重要的,它们可能通过CELL插件与数据库进行交互,动态生成报表并更新数据。 3. **test.cll**:这可能是一个插件的库文件或组件,用于支持CELL插件的各种功能,如数据处理、报表渲染...
用友华表Cell插件允许用户创建多层次的表头结构,这在分析和展示具有层次关系的数据时非常有用。例如,一个公司可能需要展示按部门、子部门和员工分类的销售数据,通过多层表头,可以清晰地将这些信息组织起来,使...
Cell5.1产品分Cell组件5.1和Cell插件5.1两个姐妹产品,它们是北京用友华表软件技术有限公司在长期开发实践的...Cell插件的接口均经过精心设计,其代码也经过多次提炼,尽量减小其大小,以适应在Interenet环境中分发。
华表cell插件软件,用于打开华表cll文件及制作
本文主要探讨的是如何在用友华表的CELL插件中实现这种数据交互,尤其是在B/S(Browser/Server)架构下。CELL插件是一款基于ActiveX技术的控件,主要用于处理中国式报表的显示和打印,但其本身只能处理客户端数据,而...
Java制表插件,可以有效的让Java代码和打印机工作
【标题】"Cell插件ASP报表设计源码" 提供了一种基于ASP技术的报表设计解决方案,这通常涉及到Web应用程序中的数据展示和分析。Cell插件可能是这个系统的关键组件,它可能是一个用于增强ASP(Active Server Pages)...
Cell插件安装 5.3.exe