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

开发思路1.先上传2.建立excel记录集3.建立sqlserver数据库记录集4.读取数据并添加到数据库中5.清空连接能否提供完整代码?yhcad@163.com... 开发思路1.先上传
2.建立excel记录集
3.建立sql server数据库记录集
4.读取数据并添加到数据库中
5.清空连接
能否提供完整代码?yhcad@163.com
展开
 我来答
奇崛又清冽的小草
推荐于2016-07-27 · 知道合伙人互联网行家
奇崛又清冽的小草
知道合伙人互联网行家
采纳数:23 获赞数:83
从事网站开发多年

向TA提问 私信TA
展开全部
'定义打开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
aliang888
推荐于2016-03-26 · TA获得超过745个赞
知道小有建树答主
回答量:628
采纳率:62%
帮助的人:206万
展开全部
没分啊,给你一点代码看看吧,
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"

我再发个代码到你邮箱吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cui820
2012-04-01 · TA获得超过282个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:257万
展开全部
同意aliang888的答案,不过他的答案没有提供连接字符串和连接代码。LZ请自己百度一下。你都没有发分出来,我也懒得帮你找。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友497841525
2012-04-01 · TA获得超过101个赞
知道小有建树答主
回答量:253
采纳率:72%
帮助的人:89.4万
展开全部
直接用数据库的导入功能了,为什么还要用EXCEL呢.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式