最近做一系统,老板要求最终要给他一个excel表格,网上搜了半天,大部分是以Excel.Application组件来操作,进行实时动态添加、更新、删除等操作,虽然功能还可以,但实现起来可能相对复杂,另外一种比较简单,就是在正常的输出页面中加入一句<%response.contenttype ="application/vnd.ms-excel"%>来实现,但如果需要更新、添加等操作则不行,后来想到有用excel作为数据库的操作方法,通过实践,基本实现了大部分功能。把代码附上,算是一点心得体会。
其实个人感觉用excel做数据源和其他如access等区别并不大,关键是连接excel的操作部分,如果这部分不对的话,可能能够连接,能够读取,但如果想添加删除等则不行了。以下为代码
新建一名为test.xls的excel文件,然后将以下代码存为一个asp文件,将asp文件和excel文件放在同一目录中,执行即可。
<%
dim connxls,connstrxls
db="test.xls"
'connstrxls="DBQ="&Server.MapPath(""&db&"")&";DefaultDir=;DRIVER={Microsoft Excel Driver (*.xls)};" 如果用此行驱动的话则只能读取,不能进行添加更新操作。
StrConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"") & ";Extended Properties=""Excel 8.0;"""
set connxls=server.createobject("ADODB.CONNECTION")
connxls.open StrConn
'-----------建表测试--------------
Sql = "CREATE TABLE jobs"
Sql = Sql & "("
Sql = Sql & "ID smallint,"
Sql = Sql & "Title varchar(50),"
Sql = Sql & "Content varchar(50),"
Sql = Sql & "Addtime datetime"
Sql = Sql & ")"
connxls.Execute(Sql)
Response.Write("建表成功!<br>")
'----------删表测试,此部分操作不成功-----------
'Sql = "CREATE TABLE jobs111"
'Sql = Sql & "("
' Sql = Sql & "ID smallint,"
' Sql = Sql & "Title varchar(50),"
' Sql = Sql & "Content varchar(50),"
' Sql = Sql & "Addtime datetime"
'Sql = Sql & ")"
'connxls.Execute(Sql)
'Response.Write("建表成功!<br>")
'Connxls.Execute("DROP TABLE jobs111")
'Response.Write("删表成功<br>")
'-----------------------------------------------
'-----------删表测试--------------
'connxls.Execute("DROP TABLE [Sheet1]")
'connxls.Execute("DROP TABLE Sheet2")
'connxls.Execute("DROP TABLE Sheet3")
'---------------------------------
'-----------插入记录---------------
Set rsxls=Server.CreateObject("ADODB.Recordset")
SQLxls = "select * from [jobs]"
rsxls.Open SQLxls,Connxls,1,3
Rsxls.AddNew
Rsxls("ID") = 1
Rsxls("Title") = "此为测试"
Rsxls("Content") = "测试内容"
Rsxls("Addtime") = Now()
Rsxls.Update
Rsxls.Close
Set Rsxls = Nothing
Response.Write("添加成功<br>")
'----------读取记录-----------------
Set Rs = Server.CreateObject("ADODB.RecordSet")
Rs.Open "Select * From [jobs]",connxls,1,1
Do While Not Rs.Eof
%>
ID:<%=Rs("ID")%> Title:<%=Rs("Title")%> <%=Rs("Content")%> <%=Rs("Addtime")%><br>
<%
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
'----------------------------------
%>
删除表部分不知为什么不可行,删除默认表格(指Sheet1\Sheet2\Sheet3)等会报错,删除自己建的表,会把所有记录清除,包括字段名,但不会删除表。