随笔 - 12  文章 - 0  trackbacks - 0
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

我参与的团队

随笔档案

搜索

  •  

最新评论

 

一.用Cell插件实现Java界面的打印简介

(1) 在HTML页面上嵌入华表的Cell插件;

为了在Applet界面中调用华表的Cell插件,我们首先在HTML页面上隐藏了一个Cell插件:

&ltOBJECT id=c style="LEFT: 0px; WIDTH: 828px; TOP: 0px; HEIGHT: 509px"

classid="clsid:3F166327-8030-4881-8BD2-EA25350E574A" VIEWASTEXT>

&ltPARAM NAME="_Version" VALUE="65536">

&ltPARAM NAME="_ExtentX" VALUE="17526">

&ltPARAM NAME="_ExtentY" VALUE="10774">

&ltPARAM NAME="_StockProps" VALUE="0"></OBJECT>


通过style="HEIGHT: 0px; WIDTH: 0px"指定Cell插件的高度和宽度都为0,从而达到隐藏Cell插件的目的

(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插件如何实现客户端与服务端的数据交换:

(1) 添加CELL插件至网页中:

具体方法请参阅一

(2) 从服务器端读取数据:

A.    打开报表模板:

在这里之所以在请求XML数据前要先有打开报表模板,是因为如果将报表样式都存放在XML数据中,势必会增加XML数据量,一方面影响网页的运行速度;另一方面,一旦更改报表样式后,就得修改程序代码,从而增加程序开发和代码维护的工作量;而在模板中存放报表格式,查询报表时先打开模板,上传数据和下传数 据时只需传送实际的报表数据,从而大大减少传送数据量和工作量;模板文件可以通过外部程序(可以使用CELL自带的报表设计器)设计,模板文件存放至服务器端的某个虚拟目录下,使用CELL的OpenFile方法打开,文件路径可以是相对路径。

B. 服务器端生成XML数据并发送给客户端:

      客户端打开模板后,根据查询要求向服务器端发送请求,服务器端接收到请求后,组织XML数据,再发送给客户端;

B.    客户端接收XML数据,分析、填充至CELL中:

 (3) 保存数据到服务器端:

 

四:Cell插件如何分发

分发 Cell 插件需要分发2 OCX 文件,1 DLL 文件, 可以通过Cab包的形式供客户端下载安装。

 

posted on 2007-05-28 13:21 天问 阅读(1428) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问