一.用Cell插件实现Java界面的打印简介
(1) 在HTML页面上嵌入华表的Cell插件;
为了在Applet界面中调用华表的Cell插件,我们首先在HTML页面上隐藏了一个Cell插件:
<OBJECT id=c style="LEFT: 0px; WIDTH: 828px; TOP: 0px; HEIGHT: 509px"
classid="clsid:3F166327-8030-4881-8BD2-EA25350E574A" VIEWASTEXT>
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="17526">
<PARAM NAME="_ExtentY" VALUE="10774">
<PARAM 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包的形式供客户端下载安装。