28,391
社区成员
发帖
与我相关
我的任务
分享
'-------------连接EXCEL文件---------------
Set objExcelConn = Server.CreateObject("ADODB.Connection")
objExcelConn.Provider = "Microsoft.Jet.OLEDB.4.0 "
objExcelConn.ConnectionString = "Data Source=" & strFilePath & ";" & "Extended Properties=Excel 8.0;"
objExcelConn.Open
on error resume next
Set objExcelRs=server.CreateObject("ADODB.Recordset")
objExcelRs.Open "select * from [Sheet1$]",objExcelConn,1,3 'Sheet1可以定义为与服务器表名相同
'-------------打开出错后关闭并释放对象、提示用户---------------
if err.number <> 0 then
objExcelRs.close
objExcelConn.close
conn.close '此处的conn是连接服务器数据库的
set objExcelRs=nothing
set objExcelConn=nothing
response.write "<script language=javascript>"
response.write "alert('请检查Excel工作薄名称是否为Sheet1!');"
response.write "window.history.back();"
response.write "</script>"
end if
Dim i
Dim strValue '存放字段值
Dim strSourceTitle, strDesTitle '存放表头(字段名列表)
Dim strSql
If Not objExcelRs.EOF Then 'Excel表不空
'-------------服务器数据表---------------
Set objLocalRs=server.CreateObject("ADODB.Recordset")
objLocalRs.Open "select * from Sheet1",conn,1,3
'-------------取目的表字段名列表---------------
strDesTitle=""
For i = 0 To objLocalRs.Fields.Count-1
if strDesTitle <> "" then
strDesTitle = strDesTitle & "," & objLocalRs(i).Name
else
strDesTitle = objLocalRs(i).Name
end if
Next
'-------------取源表字段名列表---------------
strSourceTitle=""
For i = 0 To objExcelRs.Fields.Count - 1
if strSourceTitle <> "" then
strSourceTitle = strSourceTitle & "," & objExcelRs(i).Name
else
strSourceTitle = objExcelRs(i).Name
end if
Next
'-------------比较字段名列表是否相同---------------
if Ucase(trim(strSourceTitle))<>Ucase(trim(strDesTitle)) then
'-------------关闭释放对象---------------
objExcelRs.close
objLocalRs.close
objExcelConn.close
conn.close
set objExcelRs=nothing
set objExcelConn=nothing
set objLocalRs=nothing
response.write "<script language=javascript>"
response.write "alert('Excel表中字段名与数据库表不能对应,请核实后重新导入!');"
response.write "window.history.back();"
response.write "</script>"
end if
on error resume next
conn.BeginTrans
'-------------取数据导入---------------
While Not objExcelRs.EOF
sValue=""
For i = 0 To objLocalRs.Fields.Count - 1
if svalue <> "" then
svalue=svalue &",'"& objExcelRs(i)&"'"
else
svalue="'"&objExcelRs(i)&"'"
end if
Next
strSql = "insert into Sheet1 (" & strDesTitle & ") values (" & sValue &")"
conn.execute strSql
objExcelRs.MoveNext
Wend
'-------------提交或回滚事务---------------
if err.number <> 0 then
conn.RollbackTrans
'-------------关闭释放对象---------------
objExcelRs.close
objLocalRs.close
objExcelConn.close
conn.close
set objExcelRs=nothing
set objExcelConn=nothing
set objLocalRs=nothing
response.write "<script language=javascript>"
response.write "alert('无法导入,请检查Excel数据的合法性!');"
response.write "window.history.back();"
response.write "</script>"
else
conn.CommitTrans
'-------------关闭释放对象---------------
objExcelRs.close
objLocalRs.close
objExcelConn.close
conn.close
set objExcelRs=nothing
set objExcelConn=nothing
set objLocalRs=nothing
response.write "<script language=javascript>"
response.write "alert('数据导入成功!');"
response.write "window.history.back();"
response.write "</script>"
end if
else
'-------------关闭释放对象---------------
objExcelRs.close
objExcelConn.close
conn.close
set objExcelRs=nothing
set objExcelConn=nothing
response.write "<script language=javascript>"
response.write "alert('Excel表中没有数据,请核实后重新导入!');"
response.write "window.history.back();"
response.write "</script>"
End If
<%@LANGUAGE="JAVASCRIPT"%>
<%
/*if (request("act")=="submit")
{*/
var aa=new String();
aa="1.xls";
aa=Server.MapPath(aa);
var lianjie = Server.CreateObject("ADODB.Connection");
/*lianjie.Open("provider=Microsoft.Jet.OLEDB.4.0; Data Source="+aa+";Extended Properties=Excel 8.0");*/
lianjie.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Extended properties=Excel 5.0;Data Source="+aa);
var rs = Server.CreateObject("ADODB.Recordset");
sql="select * from [Sheet1$]"
rs.Open(sql, lianjie, 3);
if (rs.EOF)
{
Response.Write("window.alert('没有资料)");
}
else
...'写你要到导入到数据库的代码,上面已经可以提取EXECL中的数据了
%>