ASP代码中如何把EXCEL数据导入到SQL SERVER数据库中?

开发思路1.先上传
2.建立excel记录集
3.建立sql server数据库记录集
4.读取数据并添加到数据库中
5.清空连接
能否提供完整代码?yhcad@163.com

'定义打开Excel表格的函数
Function OpenExcel(path)
dim excel,rs,strsql
On Error Resume Next
Set rs = Server.CreateObject("ADODB.RecordSet")
Set excel = Server.CreateObject("ADODB.Connection")
excel.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & path
If Err.number<> 0 Then
Response.Write "请检查上传的Excel文件内部格式,文件无法打开,导入失败!"
Response.End
End If
strsql = "SELECT * FROM [Sheet1$]" '在这里指定工作薄名称,默认是Sheet1$
Set rs = excel.Execute(strsql)
Set OpenExcel = rs
End Function

'读取文件中的内容
Dim rsInfo
Set rsInfo = Server.CreateObject("ADODB.RecordSet")
Set rsInfo = OpenExcel("E:/a.xls") '这里的文件路径请用Server.Path来获取

'检查读取结果
If rsInfo.State<> 1 Then
Response.Write "请检查Excel文件中的工作表命名是否为Sheet1,导入失败!"
Response.End
End If

If rsInfo.EOF And rsInfo.BOF Then
Response.Write "没有找到Excel表中的数据,导入失败!"
Response.End
End If

If IsNull(rsInfo.Fields(0)) or Trim(rsInfo.Fields(0))="" Then
Response.Write "没有找到Excel表中的数据,导入失败!"
Response.End
End If

'这里指定导入数据的列数,列数少了退出
If rsInfo.Fields.Count< 7 Then
Response.Write "Excel表中的数据列数不正确,导入失败!"
Response.End
End If

'创建数据库连接
dim dbrs,conn,sql
Set conn = Server.CreateObject("ADODB.Connection")
Set dbrs = Server.CreateObject("ADODB.Recordset")
'注: G_DB_ConnectString是连接数据库的字符串,自己定义
conn.ConnectionString = G_DB_ConnectString
conn.Open '打开数据库连接

'创建临时表
sql = "IF EXISTS (SELECT * FROM sysobjects WHERE xtype='U' and name='tmp_PartRes') "
sql = sql & "BEGIN Drop table tmp_PartRes END "
sql = sql & "Create table tmp_PartRes([ID] int identity(1,1),"
sql = sql & "PartID varchar(100),Brand varchar(100),[Package] varchar(100),"
sql = sql & "BatchNo varchar(100),[Price] varchar(100),[Stock] varchar(100) default('0'),"
sql = sql & "Brief varchar(100),StockFlag int default(1),"
sql = sql & "SuperFlag int default(1),SaleFlag int default(1))"
conn.execute sql

'取表结构 注意: 只取表的结构, 不要数据, 因为我这个是刚创建的临时表, 没有数据,
'如果表中存在数据, 要注意加上条件句, 防止取到数据 如: where ID = -1
sql = "SELECT * FROM tmp_PartRes"
dbrs.CursorLocation = 3 '这一定要设置为3
dbrs.Open sql,conn, 3, 4 '这里的参数必须是3和4

'取到表结构后, 必须要把活动连接及数据库连接关闭,这个很重要, 否则导入速度特慢.
Set dbrs.ActiveConnection = Nothing
conn.close

'提取Excel中的数据, 将excel中的数据放入到数据库表中.
While Not rsInfo.EOF
If Trim(rsInfo.Fields(0))<> "" Then
dbrs.AddNew
dbrs("PartID") = Ucase(Trim(rsInfo.Fields(0)))
dbrs("Brand") = Trim(rsInfo.Fields(1))
dbrs("Package") = Trim(rsInfo.Fields(2))
dbrs("BatchNo") = Trim(rsInfo.Fields(3))
dbrs("Price") = Trim(rsInfo.Fields(4))
If Trim(rsInfo.Fields(5))<>"" Then
dbrs("Stock") = Trim(rsInfo.Fields(5))
Else
dbrs("Stock") = "0"
End If
dbrs("Brief") = Trim(rsInfo.Fields(6))
End If
rsInfo.MoveNext
Wend

'更新记录集到数据库临时表
conn.Open '打开连接
dbrs.ActiveConnection = conn
dbrs.UpdateBatch '批量更新函数

'更新完成后, 关闭连接
dbrs.Close
Set dbrs = Nothing
rsInfo.Close
Set rsInfo = Nothing
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-03-26
没分啊,给你一点代码看看吧,
excel也是一种数据库,小型数据库而以,只不过是链接字符串跟其它数据库不同而以,打开完数据库以后,就跟操作asscess,mssql数据库的表一样了
call OpenExcel(1)
sql="Select Top 1 * From ["&sheetName&"$]" '这里是excel的表名,一定要在后面加上$
Set rs=Server.CreateObject("Adodb.RecordSet")
rs.Open sql,exlConn,1,1

NoFields:1 表示excel第一行是表头,0表示无表头
Sub OpenExcel(NoFields)
On Error Resume Next
Dim errMsg
If NoFields=1 Then NoFields="YES" Else NoFields="NO"
exlConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR="&NoFields&";IMEX=1';Data Source="&FilePath
Set exlConn = Server.CreateObject("ADODB.Connection")
exlConn.open exlConnStr
If Err.Number <> 0 then
errMsg="<br>读取Excel文件出错<br>"&Err.Source &"<br>"&Err.Description&"<br>"
End If
End Sub追问

能否提供完整的代码?

追答

上面的就挺全的了,你还想要啥啊?
sql="Select Top 1 * From ["&sheetName&"$]" '这里是excel的表名,一定要在后面加上$
Set rs=Server.CreateObject("Adodb.RecordSet")
rs.Open sql,exlConn,1,1
while not rs.rof
在这里一条条添加到数据库
rs.movenext
wend
还有别一种方法,用ms sql直接读取【OPENDATASOURCE】,下面是我自己网站导数据的代码
sql="INSERT INTO IcNew (UserID,ClassID,SuppID,Hits,IsCheck,AddDate,Model,Supplier,DateCode,Pack,Quantity,Price,GiveTime,Memo) "
sql=sql&"Select "&UserID&","&ClassID&",0,0,"&IsCheck&",'"&StartTime&"',F1,F2,F3,F4,F5,F6,F7,F8 From OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=NO;IMEX=1;DATABASE="&FilePath&"')...["&SheetName(i)&"] Where (F1'型号' And Len(F1)'') And Len(ISNULL(F2,''))<51 And Len(ISNULL(F3,''))<51 And Len(ISNULL(F4,''))<51"

我再发个代码到你邮箱吧

本回答被提问者采纳
第2个回答  2012-04-01
同意aliang888的答案,不过他的答案没有提供连接字符串和连接代码。LZ请自己百度一下。你都没有发分出来,我也懒得帮你找。
第3个回答  2012-04-01
直接用数据库的导入功能了,为什么还要用EXCEL呢.

上传excel文件并将数据导入到sql server数据库
ASP上传Excel文件并导入数据到SQL数据库,程序一共分二步操作,第一步是上传文件,上传成功后再点击“导入数据”,Excel数据将被导入到SQL的表中,操作时要注意放置程序的目录必须有足够权限,否则程序报错。

ASP.NET中如何将Excel表中的数据导入到数据库中?
ASP.NET中将Excel表中的数据导入到数据库中的方法是利用可视化界面工具直接选择字段映射导入。1)接受数据导入的表已经存在。insert into t1 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\\\\test.xls',sheet1$);2)导入数据并生成表。select * into ...

用ASP.NET如何实现EXCEL中的用户积分导入SQL数据库
string sql = @"exec teacher_insert name='" + dt.Rows[i]["教师姓名"].ToString() + "',@roleID=" + dt.Rows[i]["权限"].ToString() + ",@sex='" + dt.Rows[i]["性别"].ToString() + "',@sdpet='"+ dt.Rows[i]["系部"].ToString() + "',@tel='" + dt.Rows[...

ASP页面实现Excel数据批量导入MSSQL问题(悬赏50)
在写库的时候会按照你的Excel表中第一行记录的数据类型为准,如果第一行是字符的,后面只会输入字符类型的,你可以试着用server.CreateObject("Excel.Application")来解决 set xlApp = server.CreateObject("Excel.Application")strsource = server.MapPath(filepath) '文件路径 set xlbook = xlApp.Wo...

怎么把EXCEL中的数据自动添加到SQL数据库
先从一个数据源中读出所有数据,然后通过循环,把源数据插入到我们的目标表中。完整代码如下:< on error resume next 导入excel电子表格数据到sql sever数据库 by dicky 2004-12-27 16:41:12 function open_conn(sqldatabasename,sqlpassword,sqlusername,sqllocalname,sqlconn)创建数据库连接对象并...

求一个能把EXCEL批量导入SQL数据库的ASP程序代码!!!
Response.Write( "alert('数据导入失败.可能是文件格式或路径不正确!!!');"); return; } File1.PostedFile.SaveAs(Server.MapPath("..\/uploadexcel\/")+XLS_Name+fileExtName); XLS_Path =Server.MapPath("..\/uploadexcel\/")+ XLS_Name+fileExtName; } catch(Exception ex) { Response.Write(ex.ToString...

...把上传的EXCEL数据导入到已经建好的ACCESS数据表中。
response.end()end if set file=nothing else response.write "文件不能为空!"response.write "返回"response.end()End if set upload=nothing '上传XLS文件结束,下面从上传的XLS文件中读取数据写入到SQL数据库 strAddr=server.MapPath("uploadfile\/"&filename)...

asp.net webform 如何将excel中的内容快速批量的全部导入数据库里表中...
1、将excel里面的字段读取成一个list或者datatable 2、将数据通过存储过程或者以事务处理的方式提交到数据库

求asp中上传excel并导入数据库中的代码??
这段代码已经测试过:excel导入到access数据库 < dim FileName FileName="data.xls" '取得文件名,来自项目经理的指定,路径固定在某个虚拟路径中 Dim conn, rs set conn=CreateObject("ADODB.connection")conn.Open "Driver={Microsoft Excel Driver (*.xls)};" & _"DriverId=790;" & _"Dbq...

sql server与excel、access数据互导
使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation○2Services(数据转换服务),然后选择 czdImport Data(导入数据)。○3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(...

相似回答