insert导入office2007的xlsx文件,,急。。急,,急。。急,,急。。

春风十里耶耶耶 2010-12-07 09:46:22
1,本地文件(D:\Book1.xlsx)
2.office2007的xlsx文件。
3.sql server2005数据库
4.我是这样写的
select * from OpenRowSet
('Microsoft.ace.OLEDB.4.0',
'Excel 12.0 Xml;HDR=Yes;
IMEX=1;Database=D:\Book1.xlsx',
'select * from [Sheet1$]')
提示下面的错误。
尚未注册 OLE DB 访问接口 "Microsoft.ace.OLEDB.4.0"。

如果是我写错代码了,那么请指出哪里错误。
如果代码没有错误,那么提示的错误怎么解决。
...全文
448 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hansonblog 2011-08-09
  • 打赏
  • 举报
回复
Public Sub UploadSupBuildPlan(TempFile As String)
On Error GoTo errshow
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & TempFile & ";" & _
"Extended Properties=Excel 12.0"
strSQL = "insert INTO [odbc;Driver={SQL Server};" & _
"Server=shasql01;Database=EpullDB;" & _
"UID=xxx;PWD=********].Sup_BuildPlan (Final_Assy,Build_Qty,Requirement_Date) select Final_Assy,Build_Qty,Requirement_Date " & _
"FROM [Sheet1$]"
cn.BeginTrans
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
If Err.Number = 0 Then
StbInfo ("没有发现错误,服务器正在写入...")
cn.CommitTrans
cn.Execute "update [odbc;Driver={SQL Server};" & _
"Server=shasql01;Database=EpullDB;" & _
"uid=epull;PWD=Jabil456].Sup_BuildPlan set MaintainedBy = '" & UserName & "',MaintainTime = '" & Now & "'"
End If
MsgBox "恭喜!!" & lngRecsAff & "条记录上传成功!", vbInformation
cn.Close
Set cn = Nothing
Exit Sub
errshow:
cn.RollbackTrans
StbInfo (Err.Description & ",没有命令被成功!")
MsgBox Err.Number & Err.Description
End Sub

一样的问题,不过我执行时报ODBC-CALL FAILED 错误。为何?
  • 打赏
  • 举报
回复
算了,结贴了。
billpu 2010-12-07
  • 打赏
  • 举报
回复
另外你是驱动设定试一下
Microsoft.ACE.OLEDB.12.0
billpu 2010-12-07
  • 打赏
  • 举报
回复
装一下驱动
http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=zh-cn
  • 打赏
  • 举报
回复
高人呢
这么资深的问题,没人回答呢。。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 watermm 的回复:]
用导入导出试试
[/Quote]
导入没有2007的选项。
只能到97-2005.。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
office 2007?

2003的可以参考如下:

SQL code
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.……
[/Quote]

2003的就不用说了,我之前做过完全好用的,现在问题的是office2007,请正面回答好吗?谢谢。
水妹妹 2010-12-07
  • 打赏
  • 举报
回复
用导入导出试试
dawugui 2010-12-07
  • 打赏
  • 举报
回复
office 2007?

2003的可以参考如下:
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

2、将Excel的数据导入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------

4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, produkt) VALUES (20, 'Test')
  • 打赏
  • 举报
回复
如果换成下面的句子又出现错误了。
select * from OpenRowSet
('Microsoft.jet.OLEDB.4.0',
'Excel 12.0 Xml;HDR=Yes;
IMEX=1;Database=D:\Book1.xlsx',
'select * from [Sheet1$]')
链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.jet.OLEDB.4.0" 返回了消息 "找不到可安装的 ISAM。"。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.jet.OLEDB.4.0" 的数据源对象。


怎么解释。。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧