程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> Excel ASP互聯組件

Excel ASP互聯組件

編輯:關於VC++

組件產生背景:

Excel無疑是最廣泛的電子表格軟件,它的計算,表格,圖表,統計功能十分方便.隨著互聯網的發展,數據和資源的共享程度提高,使得分布數據庫的使用越來越廣泛.但是,專業分布數據庫開銷大,成本高,需要的專業知識很高,而且網絡傳輸和管理復雜.所以,如果能夠用普通的http通過internet/internat來實現客戶-服務器的數據操作,檢索,就可以廣泛引用到數據量不大,安全要求不嚴格的場合.IIS提供的asp無疑是服務器一個理想的數據平台,而在客戶區,如果可以用excel來處理數據庫的數據,則是很多人容易輕松掌握的.

Excel 作為Microsoft Office裡面的拳頭產品,內建了COM支持,所以通過Automation,可以輕松實現Automation組件跟excel裡面的VBA的通信.本程序就是根據這個原理完成.

組件處理流程:

說明:

1, 2都是處在使用IIS的服務器上。1是數據源,2是使用ASP的腳本,主要是處理傳遞過來的SQL語句,同時負責向組件傳遞檢索和操作結果。2跟組建的傳遞都是通過簡單http協議

3,4位於本地電腦。1是Excel主程序,用來操作返回結果,比如排序,統計,跟一般使用沒有區別。它通過幾個按鈕調用宏。2就是被調用的宏程序,用VBA編寫。主要負責把用戶的要求傳遞給組件,並且把組建返回的結果恢復到Excel界面上。4跟組件的傳輸通過COM 的特例:Automation。通過直接調用組件內建的屬性和方法,組件直接返回結果。

5是核心組件。負責兩邊的調度。具體是生成必要界面接收用戶輸入,並且生成SQL表達式,同時根據需要調用數據源來檢查用戶權限。然後把SQL傳遞給ASP腳本,ASP然後返回結果(http),組件程序然後按照自己的數據結構處理返回結果,然後傳遞回給VBA。

組件的安裝:

運行環境:

服務器:IIS4.0以上

客戶端:Excel 97以上,1m硬盤空間

安裝方法:在服務器開辟http://station的域名(假如您在本機調試則應為http://localhost/(默認)),把*.asp和數據庫文件拷貝到虛擬根目錄.

在客戶端拷貝School.exe和MFC動態鏈接庫(未包含),運行School.exe一次注冊組件.然後調用Excel打開工作表,直接操作.

組件程序功能:

該組件程序以學校學生成績管理系統為例子,實現本地Excel和服務器數據庫的數據交換.

通過該組件,可以在Excel中實現對網絡上數據庫的檢索,根據不同條件返回不同數據。同時可以實現對服務器數據的更新和插入,以及不同的權限訪問。具體說明如下:

查詢:

打開工作表格,在頂端出現五個按鈕,分別是:load,unload,select,插入新數據,updata.

如果要實現查詢功能,select,出現上圖表示的窗口.每一項有四個輸入框,第一個保留,第二個和第三個表示該字段的最小和最大值,最後一個表示是否要該字段的返回值.其中所有的字段都是按照與運算操作,點擊ok後,工作表返回查詢結果.如果在查詢窗口中不填入任何數據,就是返回所有數據的所有單元.

如圖,從a5單元開始,頂端填寫字段名字,下面填寫數據,然後選中要插入的數據,點擊”插入新數據”.然後輸入正確的用戶名和密碼,選擇的數據就會被插入數據庫中.用戶名和密碼在數據庫中保存.

更新數據:

如圖,從a5單元格開始,填入兩個字段名和對應數值,點擊update,輸入用戶名和密碼.左邊的列指定操作對象,當數據庫中的數據條件和左邊的配對時,才把數據更新成右邊的數值.

組件程序功能分析:

優點:

1 本組件可以方便連接Excel和網絡服務器的數據庫,同時,數據庫的操作用ASP調用SQL完成,這樣可以極度減小客戶端程序的工作,跟使用傳統ODBC相比,維護和安裝更容易,同時,系統需求也更小.由於數據庫的調用全部都在服務器,組件只負責傳遞SQL語句,整個系統的更改,只需要集中在服務器就是了.

2 使用Excel來作為的數據庫操作操作平台,更容易讓普通使用者接受,而不需要用戶有專門的數據庫知識,整個使用就跟用Excel在本地計算機打開文件一樣.同時,對數據的分析,比如排序和統計,就可以直接使用Excel的功能,還可以借用Excel的圖表,格式轉換等等功能.

3 由於組件用COM技術編寫,所以它不僅可以用在Excel上,它可以和任何使用接口技術的程序通信.同時,新功能的添加,只需要在組件上加入新的屬性和方法.所以該組件特別靈活.

如此看來,該組件可以方便地實現任意程序跟服務器數據庫的連接,在不需要使用專業分布數據庫的情況下,比如班主任在全校學生數據庫上檢索特定學生,並且在Excel上方便操作;銷售人員在異地動態更新公司數據庫等等領域都可以方便地使用.

缺點:

本組件程序主旨是為了演示Automation的應用,包含的具體實例(學生成績系統)並不完善.具體表現在:數據庫設計不能完全體現學校學生成績管理機制,excel中vba代碼過於冗長,組件服務依賴於windows導致的健壯性不好,沒有提供對網絡連接的檢查,不提供明顯類型檢驗和出錯原因返回,同時在數據量特別大的時候很容易導致效率極度下降,數據的更新和插入必須按照特定格式進行等等.

導致以上結果的原因是:

1 主體是體現Automation的功能,不是具體實現一個軟件

2 對學校成績管理機制缺乏必要了解.

3 Excel本身是表格軟件,在處理上千個數據的時候力不從心,格式復雜.

4 本人剛剛進入大二,對新的技術處於探索階段,數據結構和數據庫的專業課還沒有完成,同時找不到對Atuomation和COM有深入了解的同學合作完成,導致程序效率低下漏洞多

5 對VBA和Excel中的對象和方法缺乏詳細了解.

6 由於COM技術還在發展中,它的細節資料不多,由於內部API隱藏太多,所以真正的COM程序最好是使用c#編寫.

但是本程序完成地提供了通過Atuomation對數據庫的遠程訪問和與Excel的完美連接,只需要對其中的模塊進行補充完善,一個方便的遠程數據庫就可以完成.

本程序測試環境

Windows 2000 Professional sp2+IIS5+Office Office Xp+Pentiun4+256MRDRAM

Windows 2000 Professional +IIS5+Office 2000+Pentium3+256MSDRAM

參考資料:

Inside VC++ 5th Edition

Quick Basic 教程

Excel5 使用指南

ASP 網絡開發技術

以及http://www.vchelp.net 上面的相關資料

ECNU.CS 熊力 [email protected]

本程序本來准備參加學校科技作品比賽,順便投到這裡,希望得到大家的指教!

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved