李 衛(wèi) 王魁生
摘要:在Web頁面上根據(jù)用戶需求,從后端數(shù)據(jù)庫服務(wù)器上提取數(shù)據(jù)生成動(dòng)態(tài)Excel報(bào)表。
關(guān)鍵詞:ASP;DLL;權(quán)限;EXCEL公式;報(bào)表;模板;數(shù)據(jù)庫
前言
在Web頁面上根據(jù)用戶需求,從后端數(shù)據(jù)庫服務(wù)器上提取數(shù)據(jù)生成動(dòng)態(tài)Excel報(bào)表,用戶可查看及下載、打印,進(jìn)一步對(duì)數(shù)據(jù)做深層次的加工。綜合Asp、DLL(動(dòng)態(tài)鏈接庫)及Excel等技術(shù)的特點(diǎn),可縮短開發(fā)人員對(duì)報(bào)表的理解用時(shí),加快報(bào)表的生成。這種技術(shù)也是黑客慣用的侵入系統(tǒng)的方法。
一、技術(shù)概述
1Asp的重定向及調(diào)用動(dòng)態(tài)庫技術(shù)
Asp(Active Server Page)技術(shù)是使用VBScriipt、JScript等簡(jiǎn)單易懂的腳本語言,結(jié)合HTML代碼,可在服務(wù)器端直接執(zhí)行,快速地完成網(wǎng)站的應(yīng)用程序。根據(jù)用戶需求能夠快速、方便進(jìn)行重定向操作。
它同時(shí)可以方便插入組件對(duì)象。組件是包含在動(dòng)態(tài)鏈接庫DLL中的可執(zhí)行代碼。組件可以提供一個(gè)或多個(gè)對(duì)象以及對(duì)象的方法和屬性。組件提供的對(duì)象,在實(shí)際使用中只要?jiǎng)?chuàng)建對(duì)象的實(shí)例,并將這個(gè)新的實(shí)例分配變量名即可調(diào)用它的方法和屬性。使用ASP的Server,CreateObject方法可以創(chuàng)建對(duì)象的實(shí)例,使用腳本語言的變量分配指令可以為對(duì)象實(shí)例命名。
2Excel報(bào)表模板生成技術(shù)
報(bào)表是從數(shù)據(jù)庫中按照用戶需求將數(shù)據(jù)提取后,進(jìn)行分類、加工得到的最后的結(jié)果,而Excel中的公式、圖表對(duì)于生成報(bào)表是極其方便的。利用Excel生成報(bào)表,可使開發(fā)人員和用戶緊密結(jié)合,縮短開發(fā)人員對(duì)報(bào)表理解的時(shí)間,并且用Excel開發(fā)的報(bào)表能夠使最終用戶有能力快速進(jìn)一步對(duì)數(shù)據(jù)進(jìn)行綜合分析。
3DLL的生成、數(shù)據(jù)庫及Excel的操縱技術(shù)
動(dòng)態(tài)鏈接庫(Dynamlc Link Library,縮寫為DLL)在服務(wù)器端上是經(jīng)常使用的技術(shù),它是一個(gè)可以被其它應(yīng)用程序共享的程序模塊,其中封裝了一些可以被共享的例程和資源。它所調(diào)用的函數(shù)代碼沒有被拷貝到應(yīng)用程序的可執(zhí)行文件中去,而是僅僅在其中加入了所調(diào)用函數(shù)的描述信息,僅當(dāng)應(yīng)用程序被裝入內(nèi)存并開始運(yùn)行時(shí),在Windows的管理下,才在應(yīng)用程序與相應(yīng)的DLL之間建立鏈接關(guān)系,根據(jù)鏈接產(chǎn)生的重定位信息,Windows才轉(zhuǎn)去執(zhí)行DLL中相應(yīng)的函數(shù)代碼。這樣就節(jié)省了服務(wù)器的內(nèi)存。DLL中的例程可以被應(yīng)用程序訪問,而應(yīng)用程序并不知道這些例程的細(xì)節(jié)。這樣就提高了Web程序的安全性。
在封裝好的DLL內(nèi),根據(jù)用戶不同需求可以很容易生成數(shù)據(jù)庫的聯(lián)接、數(shù)據(jù)的提取和對(duì)已存在服務(wù)器上Excel模板文件(報(bào)表)的寫入等功能。
4Web服務(wù)器上的權(quán)限設(shè)定
NT服務(wù)器上的文件安全模式分為兩種,即用戶權(quán)限和文件權(quán)限。必須要在Excel模板文件(報(bào)表)存在的目錄設(shè)置其權(quán)限為用戶System可完全控制,System用戶擁有對(duì)這個(gè)目錄完全控制權(quán)限。
二、實(shí)現(xiàn)方案
Web服務(wù)器使用Asp響應(yīng)用戶,根據(jù)用戶不同的需求來調(diào)用DLL中不同的函數(shù)線程,該線程首先從數(shù)據(jù)庫服務(wù)器上提取相應(yīng)的數(shù)據(jù),然后打開相應(yīng)的Excel模板文件,將數(shù)據(jù)存入新的Excel文件。對(duì)數(shù)據(jù)進(jìn)行加工處理工作重點(diǎn)是用Excel中的公式來定義,簡(jiǎn)單地用DLL中函數(shù)處理。最后Asp將用戶需求重定向到已經(jīng)生成的Excel文件上,用戶即可查看、打印或者做進(jìn)一步的加工廠作。當(dāng)然,你必須設(shè)定NT上的System用戶擁有對(duì)Excel模板存放的目錄有完全控制的權(quán)限。
三、編程
1Asp編程
a用戶需求選擇界面
b響應(yīng)用戶請(qǐng)求的show.asp頁面
2用VB編制DLL文件
在VB6.0中用向?qū)梢粋€(gè)ActiveXDLL工程文件,代碼(略)。
3用Excel公式來進(jìn)行數(shù)據(jù)的分類匯總工作
4最后用生成的DLL庫在服務(wù)器端注冊(cè)
四、結(jié)束語
實(shí)現(xiàn)一個(gè)目標(biāo)可以選擇單一的軟件模式來實(shí)行,但綜合幾大流行軟件的長(zhǎng)處,往往可以起到事半功倍的效果。以上方法簡(jiǎn)單明了,但卻在做報(bào)表工作時(shí)很有效,能節(jié)約大量的時(shí)間。同時(shí)能夠自動(dòng)在internet網(wǎng)上發(fā)布。但在程序的調(diào)試過程中,尤其是DLL的調(diào)試,最好在本地機(jī)上先調(diào)試通過,這樣可以減少調(diào)試時(shí)間。本軟件在西安長(zhǎng)慶科技管理系統(tǒng)中得到了很好的應(yīng)用。