張秀虎
摘 要:隨著網(wǎng)絡(luò)技術(shù)的不斷普及,學校信息化管理過程中不斷引進基于ASP的網(wǎng)絡(luò)管理軟件,在人們習慣使用Excel的情況下,如何將大量的Excel信息直接運用到網(wǎng)絡(luò)管理軟件中,或?qū)⒕W(wǎng)絡(luò)管理軟件中的數(shù)據(jù)導出到Excel中,是本文要討論的問題,筆者通過案例來闡述解決問題的方法,為廣大從事學校信息化工作的同仁提供參考。
關(guān)鍵詞:ASP;Access;Excel;數(shù)據(jù)轉(zhuǎn)換
中圖分類號:TP311.56文獻標識碼:B文章編號:1673-8454(2009)02-0058-03
一、引言
隨著學校信息化進程的不斷推進,基于ASP操作平臺的網(wǎng)絡(luò)管理軟件越來越多,目前大多網(wǎng)絡(luò)管理軟件都不太兼容,用戶經(jīng)常要用比較熟悉的Excel來進行過渡,在學校年級和部門的日常信息管理過程中,也還是使用Excel來管理各種信息,學校與上級管理部門往來的數(shù)據(jù)也大多是Excel形式的,所以給學校信息化管理帶來很大的不便。作為從事學校信息化工作的人員,應編寫基于ASP的日常管理軟件,方便用戶日常信息的管理工作,考慮電子表格Excel數(shù)據(jù)與數(shù)據(jù)庫Access之間的相互銜接的問題,讓軟件更具大眾化。
二、基于ASP的網(wǎng)絡(luò)管理軟件的工作模式
基于ASP的網(wǎng)絡(luò)管理軟件,它的工作模式如圖1所示。
用戶在用戶機上通過IE瀏覽器訪問Web服務(wù)器,進行數(shù)據(jù)管理,數(shù)據(jù)存放于服務(wù)器的后臺數(shù)據(jù)庫中。
三、環(huán)境配置
服務(wù)器端的環(huán)境配置,在教育行業(yè)一般都采用微軟系列的配置,一般有:
(1)Win2000 Server + IIS + Office
(2)Windows XP ++ IIS + Office
本文所采用的技術(shù)都是在第二種配置方法下通過的,對Office的版本沒有特殊要求,考慮到客戶機配置的不確定性和兼容特性,建議服務(wù)器端Office版本不要太高,以防止客戶機下載后無法正確顯示。
服務(wù)器端還必須設(shè)置的一點是COM組件的操作權(quán)限。在命令行鍵入“DCOMCNFG”,則進入DCOM組件配置界面,選擇Microsoft Excel后,右擊選擇屬性命令,將安全標簽中的三個單選項一律選擇自定義,并通過編輯,將Everyone加入所有權(quán)限。保存完畢后重新啟動服務(wù)器。
而服務(wù)器的后臺數(shù)據(jù)庫,目前也大多采用Access或者SQL Server 2000,本文中采用的是Access。
客戶端的環(huán)境配置比較簡單,只要裝有Office2000和IE5.0即可,更高版本也可以。
四、軟件設(shè)計
1.將電子表格Excel中的數(shù)據(jù),導入到后臺數(shù)據(jù)庫Access中
電子表格A.XLS里面存放一個班級的部分數(shù)據(jù)(如表1)。
后臺數(shù)據(jù)庫test.mdb的數(shù)據(jù)表jbxx對應設(shè)計了4個字段name、sex、csny、bj,字段類型均為文本型,字段長度分別為8、2、8、2。
代碼采用ASP與Html語言混合編寫,運用Dreamweaver編寫,文件名為test.ASP。
<% On Error Resume Next
set objApp=CreateObject("Excel.Application")
'創(chuàng)建Excel對象
objApp.DisplayAlerts=false
objApp.Application.Visible=false
strAddr=Server.MapPath(".")
if request.form("action")="input" then
objApp.WorkBooks.Open(strAddr&"a.xls")'打開A.XLS電子表格
set objExcelBook=objApp.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
dim conn,connstr,mdb,sql,namep,sexp,csnyp,bjp,i
mdb="test.mdb"
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath(mdb)
Set Conn=Server.CreateObject("ADODB.Connection")
conn.Open connstr '連接數(shù)據(jù)庫test.mdb
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "數(shù)據(jù)庫連接出錯,請檢查連接字串。"
Response.End
End If
sql="select * from jbxx"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3 '打開jbxx表
'讀取電子表格中第I行的數(shù)據(jù)
i=2'從第二行開始讀取數(shù)據(jù),直到最后一行數(shù)據(jù)
while trim(objExcelSheet.cells(i,1))<>""
namep=objExcelSheet.Cells(i,1).Value '姓名
sexp=objExcelSheet.Cells(i,2).Value'性別
csnyp=objExcelSheet.Cells(i,3).Value '出生年月
bjp=objExcelSheet.Cells(i,4).Value '班級
rs.addnew 'jbxx表中新建一條記錄,并替換為緩存變量中數(shù)據(jù)
rs("name")=namep
rs("sex")=sexp
rs("csny")=csnyp
rs("bj")=bjp
rs.update
i=i+1
wend
rs.close
set rs=nothing
end if
objApp.Quit
set objApp=Nothing
%>
2.將數(shù)據(jù)庫Access中的數(shù)據(jù),導出到電子表格Excel中
<%
if request.form("action")="output" then
objApp.WorkBooks.add
set objExcelBook=objApp.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
‘建立表頭
objExcelSheet.Cells(1,1).Value="學生基本信息表"
objExcelSheet.range("A1:D1").merge
objExcelSheet.Cells(2,1).Value="姓名"
objExcelSheet.Cells(2,2).Value="性別"
objExcelSheet.Cells(2,3).Value="出生年月"
objExcelSheet.Cells(2,4).Value="班級"
sql="select * from jbxx "
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
set rs1=conn.execute(sql)
j=3
do while not rs1.eof
objExcelSheet.Cells(j,1).Value=rs1("name")
objExcelSheet.Cells(j,2).Value=rs1("sex")
objExcelSheet.Cells(j,3).Value=rs1("csny")
objExcelSheet.Cells(j,4).Value=rs1("bj")
rs1.movenext
j=j+1
loop
rs1.close
set rs1=nothing
objExcelBook.SaveAs(strAddr&"a.xls") ‘將信息保存在a.xls中
objApp.Quit
set objApp=Nothing
end if
%>
3.操作界面
<form name="form1" method="post" action="test.ASP?action=output">
<input type="submit" name="out_excel" value="導出到excel" >
</form>
<form name="form2" method="post" action="test.ASP?action=input">
<input type="submit" name="input_Access" value="輸入到access" >
</form>
參考文獻:
[1]譚浩強.動態(tài)網(wǎng)頁制作ASP[M]. 北京:電子工業(yè)出版社,2001,4.
[2]焦薦滄.深入體驗ASP.net[M]. 西安:西安電子科技大學出版社,2001,6.
(編輯:隗爽)