崔學(xué)榮,張浩
隨著計算機網(wǎng)絡(luò)的發(fā)展,基于 Web的 B/S(Browser/Server)結(jié)構(gòu)的應(yīng)用程序越來越受到人們的喜愛和推廣。因為B/S結(jié)構(gòu)屬于廋客戶端應(yīng)用程序,只需要在服務(wù)器上部署系統(tǒng),即可實現(xiàn)所有聯(lián)網(wǎng)計算機的互操作。然而對程序開發(fā)人員和最終用戶而言,傳統(tǒng) Web應(yīng)用程序最大的缺點就是靈活性差[1]。一旦用戶提出一種新的數(shù)據(jù)錄入或顯示模式,一般都要由專業(yè)程序員重新開發(fā)或者布局Web應(yīng)用程序。為了滿足用戶對靈活多變的 Web應(yīng)用程序的需求,最可取的方案就是實現(xiàn)基于模板的 Web應(yīng)用程序,由系統(tǒng)管理員自己定義各類應(yīng)用的模板,由一般用戶直接使用這些模板來錄入數(shù)據(jù)或顯示打印數(shù)據(jù)[2]?;谀0宓膽?yīng)用程序在一般的桌面應(yīng)用程序中比較容易實現(xiàn),但是卻一直是Web應(yīng)用程序的一大難題,本文采用OWC控件,設(shè)計了一套完整的模板制作、編輯數(shù)據(jù)、查看數(shù)據(jù)的流程,可以大大減輕軟件開發(fā)人員的工作量、增強系統(tǒng)的靈活性、滿足用戶隨時變化的顯示、錄入方式、提高人機界面的友好性。
OWC控件屬于Office ActiveX 控件中的一個,在安裝Microsoft Office 時即可免費安裝。雖然該控件命名為“Web Component”,但是它不僅可以應(yīng)用在Web應(yīng)用程序中,而且也可以應(yīng)用在桌面應(yīng)用程序中,用于向程序中添加電子表格、圖表等[3]。OWC 控件主要包含 Spreadsheet、Chart、PivotTable和Data Source等4個子控件。其中Spreadsheet控件,能夠在程序中嵌入一個類似于Excel 表單的控件,可以實現(xiàn)排序、篩選、公式計算、格式設(shè)置、復(fù)制粘貼、導(dǎo)出Excel等操作;Chart控件:能夠在程序中嵌入一個類似于Excel圖表的控件,并可以將生成的各類統(tǒng)計圖導(dǎo)出成圖片格式;PivotTable 組件:向系統(tǒng)中增加類似于Excel數(shù)據(jù)透視表的控件,實現(xiàn)分類統(tǒng)計匯總;Data Source控件:向系統(tǒng)中增加類似于Excel外部數(shù)據(jù)的控件,用來綁定數(shù)據(jù)源、對數(shù)據(jù)源的數(shù)據(jù)進(jìn)行檢索等,該控件在運行時,不可見,經(jīng)常與上述3個子控件聯(lián)合使用。常用的OWC控件的版本為Office2003中的 owc11,其 ClassID 為“CLSID:0002E55D-0000-0000-C000-000000000046”。例如:
本文設(shè)計的基于OWC模板的Web應(yīng)用程序,主要分為3個模塊,如圖1所示?!澳0逯谱鳌蹦K主要是由程序員將模板固化在程序中或者系統(tǒng)管理員通過在線的方式編輯完成;“編輯數(shù)據(jù)”模塊主要是由終端用戶打開模板,錄入數(shù)據(jù),保存數(shù)據(jù);“查看數(shù)據(jù)”模塊是以圖表的方式打開顯示已經(jīng)保存的數(shù)據(jù)。
圖1 用OWC創(chuàng)建基于模板的Web應(yīng)用程序的流程圖
模板制作是在編程時或者管理員在后臺系統(tǒng)維護(hù)中在線完成的,根據(jù)流程可以分為“制作模板”、“提取 HTML或XML字符流”和“保存模板”3部分。
可以通過兩種方法制作模板:
1)在Office的Excel中直接制作。這種方法制作簡單、可以利用的功能菜單多,操作簡單、靈活。但是需要手工將Excel另存為HTML或XML格式文件。
2)通過OWC控件。利用OWC控件以及程序員提供的功能在線制作模板。OWC控件已經(jīng)提供了一些在線編輯的功能按鈕和右鍵快捷菜單(主要在快捷菜單的“命令和選項”中),例如:文本、字體、數(shù)字格式、邊框的格式,合并單元格,公式編輯等。
但是,OWC控件本身提供的功能非常有限,程序員還需要通過VBScript或JavaScript客戶端腳本語言擴充其他常用的功能,例如:凍結(jié)窗格、插入超鏈接、插入文件、鎖定單元格等。實現(xiàn)方法如下(假設(shè)當(dāng)前的 OWC控件的 ID為“OWC”,客戶端腳本語言為VBScript):
1)凍結(jié)窗格:將對應(yīng)的行(當(dāng)前單元格的上一行)或列(當(dāng)前單元格的左列)凍結(jié),當(dāng)上下或左右拖動滾動條時,被凍結(jié)的區(qū)域?qū)⒁恢憋@示。
Sub setFreeze (Status)' Status為邏輯型,取值為 true(凍結(jié))或者 false(不凍結(jié))。
2)插入超鏈接
3)插入文件
插入文件實現(xiàn)的思路:首先將文件通過上傳組件上傳到服務(wù)器,然后再在Excel中相應(yīng)的單元格中對該文件做超級連接。
4)鎖定單元格:將選定的單元格鎖定,通過鎖定單元格可以實現(xiàn)固定模板的格式,使得用戶只能在特定的單元格輸入數(shù)據(jù)。
制作的模板最終要以 OWC(HTML或 XML)字符流(如果不保存格式也可以使用CSV字符流)的形式存放在文本框中。
1)在Office的Excel中制作的模板:要首先將其另存為HTML或XML格式文件,然后用記事本打開保存的文件從而得到字符流。最后將該字符流復(fù)制、粘貼到網(wǎng)頁的文本框中即可。
2)通過 OWC 控件制作模板:可以通過OWC.HTMLDATA(如果是 XML字符流則應(yīng)該是OWC.XMLDATA,如果是 CSV字符流則應(yīng)該是OWC.CSVDATA)獲得模板的字符流??梢酝ㄟ^客戶端腳本語言將模板的字符流轉(zhuǎn)存到隱藏型的文本框中(假定文本框的 ID 為 OWCInput)。例如:OWCInput.value=OWC1.HTMLDATA。最后再將文本框中的數(shù)據(jù)提交到服務(wù)器。
將文本框中的OWC字符流提交到服務(wù)器中的文件中、服務(wù)器的數(shù)據(jù)庫中或者直接嵌入到程序文件中。
1)保存到數(shù)據(jù)庫中
可以將創(chuàng)建的模板保存到數(shù)據(jù)庫的備注型字段中,保存到數(shù)據(jù)庫中時要注意,因為OWC的字符流中包含單引號或雙引號等,所以最好是采用傳遞參數(shù)的形式來執(zhí)行SQL語句而不要直接通過連接字符串生成 SQL語句。例如在VB.net中將模板保存到SQL Server數(shù)據(jù)庫中可以執(zhí)行如下語句:
2)保存到文件中
可以將創(chuàng)建的模板保存到服務(wù)器的文件中,在 ASP.net中需要使用 System.IO.File命名空間,在 ASP中需要使用Scripting.FileSystemObject組件讀寫文本文件。
3)嵌入到程序文件中
對于永久不變的頁面,程序員也可以將OWC字符流直接寫在程序中,此時需要將HTML字符流賦值給OWC的參數(shù)HTMLDATA(對于XML字符流參數(shù)名為XMLDATA,對以 CSV字符流參數(shù)名為 CSVDATA)。例如:
value="
編輯數(shù)據(jù)模塊一般是給終端用戶使用的,用 OWC的Spreadsheet將模板顯示出來,用戶錄入數(shù)據(jù)或者直接拷貝數(shù)據(jù)到表格中均可,編輯數(shù)據(jù)模塊還要注意以下兩個問題:
有以下兩種顯示模板的方法:
1)模板如果是以文件的形式保存到服務(wù)器上,則應(yīng)該設(shè)定 OWC控件的 htmlURL(如果是 XML文件則應(yīng)該是xmlURL,如果是CSV文件,則應(yīng)該是csvURL)屬性,指向服務(wù)器的文件,例如:。
2)模板如果是以字符的形式保存到數(shù)據(jù)庫中,則應(yīng)該查詢數(shù)據(jù)庫,將字符流賦值給OWC控件的HTMLDATA(如果是XML文件則應(yīng)該是xmlDATA,如果是CSV文件,則應(yīng)該是csvDATA)屬性。例如:">。
可以將整個 OWC控件的數(shù)據(jù)保存到服務(wù)器上,參照“2.3保存模板”,也可以用客戶端腳本語言只提取關(guān)心的單元格的數(shù)據(jù)。方法是:
1)在客戶端將單元格的數(shù)據(jù)保存到一個隱藏型的輸入框中。例如,以下JavaScript代碼是將OWC中第1列的所有數(shù)據(jù)放在了inputValue這個輸入框中。
2)在服務(wù)器端提取該輸入框中的值,用split方法將其分離。例如:string[]input=inputValue. Value.Split('!'),這樣就將輸入的值分離到了數(shù)組input中。
可以在 OWC的 Spreadsheet、Chart、 PivotTable等控件中以圖、表的形式查看數(shù)據(jù)。例如,圖2是利用ChartSpace控件顯示的國家863項目“超寬頻帶無線精確定位系統(tǒng)的開發(fā)與設(shè)計”中通過Web瀏覽器實時看到UWB定位模塊運行的結(jié)果。這些圖表在 Web瀏覽器中是可以拖動改變大小而顯示質(zhì)量并不改變的矢量圖形。
圖2 ChartSpace控件顯示實例
本文提出了一種使用Microsoft Office提供的OWC(電子表格、圖表、交叉圖、數(shù)據(jù)源)控件,實現(xiàn)了基于模板的Web應(yīng)用程序的方法,并用該方法實現(xiàn)了“超寬頻帶無線精確定位系統(tǒng)”。實踐證明,采用基于 OWC控件模板的數(shù)據(jù)編輯系統(tǒng),可以大大地增加 Web應(yīng)用程序的靈活性、界面友好性和系統(tǒng)穩(wěn)定性。
[1]唐賢倫,張學(xué)旺.OWC組件在Web圖表統(tǒng)計中的應(yīng)用[J].計算機應(yīng)用,2003,23(S2):437-438.
[2]關(guān)鋒.基于 OWC 的報表軟件的設(shè)計與實現(xiàn)[D].北京:北京大學(xué)軟件工程系,2006.
[3]Jun Fujima,Shohei Yoshihara,Yuzuru Tanaka. Web Application Orchestration Using Excel[C].Proceedings of the IEEE/WIC/ACM International Conference on Web Intelligence. Washington DC: IEEE Computer Society,2007: 743-749.
[4]Jacek Slomczewski, Wojciech Zabierowski, Andrzej Napieralski. Update and Modification Application for WWW Templates[C]. Modern Problems of Radio Engineering, Telecommunications, and Computer Science.Washington DC:IEEE Computer Society,2006: 406 – 409.
[5]Sam Chung, Yun-Sik Lee, Modeling Web applications using Java and XML related technologies[C]//Proceedings of the 36th Annual Hawaii International Conference on System Sciences-2003. Washington DC:IEEE Computer Society, 2003:1-10.
[6]Chanwit Kaewkasi,Wanchai Rivepiboon. WWM: a practical methodology for Web application modeling[C].Proceedings of the 26th International Computer Software and Applications Conference on Prolonging Software Life:Development and Redevelopment. Washington DC: IEEE Computer Society, 2002: 603 – 608.
[7]Microsoft Corporation.腳本主題[EB/OL].http://www.microsoft.com/china/technet/community/script center/topics/default.mspx.2010.