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

          常用鏈接

          我參與的團(tuán)隊(duì)

          隨筆檔案

          搜索

          •  

          最新評(píng)論

           

          一.用Cell插件實(shí)現(xiàn)Java界面的打印簡(jiǎn)介

          (1) 在HTML頁(yè)面上嵌入華表的Cell插件;

          為了在Applet界面中調(diào)用華表的Cell插件,我們首先在HTML頁(yè)面上隱藏了一個(gè)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>


          通過(guò)style="HEIGHT: 0px; WIDTH: 0px"指定Cell插件的高度和寬度都為0,從而達(dá)到隱藏Cell插件的目的。

          (2) 在Applet中提供兩個(gè)調(diào)用接口方法;

          下面是一個(gè)Applet的代碼實(shí)例,其中提供了callCellMethod()callJavaScriptMethod()兩個(gè)接口方法,分別可用來(lái)調(diào)用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;}}

          通過(guò)getCell()這個(gè)方法,可以在Java Applet中直接獲得用JSObject表示的Cell插件,從而可以直接調(diào)用它的方法。例如,在Java Applet中向Cell插件的一個(gè)單元格寫(xiě)入數(shù)據(jù),可以如下調(diào)用

          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插件提供的接口方法。這樣就實(shí)現(xiàn)了從Java Applet到華表的Cell插件的調(diào)用。

          二.Cell插件如何實(shí)現(xiàn)客戶端與服務(wù)端的數(shù)據(jù)交換:

          (1) 添加CELL插件至網(wǎng)頁(yè)中:

          具體方法請(qǐng)參閱一

          (2) 從服務(wù)器端讀取數(shù)據(jù):

          A.    打開(kāi)報(bào)表模板:

          在這里之所以在請(qǐng)求XML數(shù)據(jù)前要先有打開(kāi)報(bào)表模板,是因?yàn)槿绻麑?bào)表樣式都存放在XML數(shù)據(jù)中,勢(shì)必會(huì)增加X(jué)ML數(shù)據(jù)量,一方面影響網(wǎng)頁(yè)的運(yùn)行速度;另一方面,一旦更改報(bào)表樣式后,就得修改程序代碼,從而增加程序開(kāi)發(fā)和代碼維護(hù)的工作量;而在模板中存放報(bào)表格式,查詢報(bào)表時(shí)先打開(kāi)模板,上傳數(shù)據(jù)和下傳數(shù) 據(jù)時(shí)只需傳送實(shí)際的報(bào)表數(shù)據(jù),從而大大減少傳送數(shù)據(jù)量和工作量;模板文件可以通過(guò)外部程序(可以使用CELL自帶的報(bào)表設(shè)計(jì)器)設(shè)計(jì),模板文件存放至服務(wù)器端的某個(gè)虛擬目錄下,使用CELL的OpenFile方法打開(kāi),文件路徑可以是相對(duì)路徑。

          B. 服務(wù)器端生成XML數(shù)據(jù)并發(fā)送給客戶端:

                客戶端打開(kāi)模板后,根據(jù)查詢要求向服務(wù)器端發(fā)送請(qǐng)求,服務(wù)器端接收到請(qǐng)求后,組織XML數(shù)據(jù),再發(fā)送給客戶端;

          B.    客戶端接收XML數(shù)據(jù),分析、填充至CELL中:

           (3) 保存數(shù)據(jù)到服務(wù)器端:

           

          四:Cell插件如何分發(fā)

          分發(fā) Cell 插件需要分發(fā)2個(gè) OCX 文件,1個(gè) DLL 文件, 可以通過(guò)Cab包的形式供客戶端下載安裝。

           

          posted on 2007-05-28 13:21 天問(wèn) 閱讀(1429) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 上饶县| 通州区| 新晃| 鸡西市| 寻甸| 双鸭山市| 北票市| 景洪市| 民和| 定南县| 南郑县| 灵丘县| 白山市| 炉霍县| 禄丰县| 大竹县| 西城区| 南和县| 康平县| 安泽县| 读书| 大方县| 威远县| 英德市| 上高县| 闵行区| 班玛县| 孝昌县| 右玉县| 洱源县| 文成县| 九龙县| 青阳县| 武威市| 兴国县| 美姑县| 乌鲁木齐市| 红原县| 刚察县| 正蓝旗| 乌兰察布市|