使用Query将Sql server数据导出到Excel

时间:2014-04-23 09:02:44

标签: sql sql-server database excel export-to-excel

我正在尝试使用sql查询将SQL Server数据导出到excel文件。但我收到错误

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Unspecified error". Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

我正在使用的查询

select * from OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\share\Test1.xlsx;HDR=YES','SELECT id FROM [Sheet1$]') SELECT id FROM Table

我也启用了

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE


 EXEC master.dbo.sp_MSset_oledb_prop 'Microsoft.Jet.OLEDB.4.0', 'AllowInProcess', 0 
GO 
EXEC master.dbo.sp_MSset_oledb_prop 'Microsoft.Jet.OLEDB.4.0', 'DynamicParameters', 0
GO 

我还使用完全权限共享了我的文件夹。 我已经给出了Excel文件与表名相同的标题 但同样的错误

1 个答案:

答案 0 :(得分:0)

您正在使用的连接是错误的:它是JET驱动程序

  • 用于读/写各种类型的平面文件
  • 指向名为c:\ share \ test1.xlsx
  • 的文件
  • 已过时,已被ACE驱动程序取代。

您需要重新编写代码。 This article提供了如何做到这一点的好主意。你不能错过的一点,应该首先做的是标题为引用ADO对象库的段落。

你可能对代码正在做的事情有很多疑问(例如,什么是INTEGRATED SECURITY = SSPI?还有更多的负载),这么多,我不会回答它们,因为我我必须写一本书的章节,我不知道你是否会问他们中的任何一本。我建议您阅读文章,尝试代码,然后在这里的个人帖子中发布个别问题。

一旦线索;这段代码:

'Connect to the Pubs database on the local server.
strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=pubs;"

...指定数据库服务器和数据库的名称。如果(本地)不是您的本地计算机,请将(本地)替换为数据库服务器的名称。 pubs name是数据库的名称。替换为您的数据库。

此外,这一点:

' Extract the required records.
.Open "SELECT * FROM Authors"

在这里," SELECT *来自作者"是定义查询将返回的数据的SQL。您需要将其替换为SQL,它将从您的数据库中获取所需的数据。同样,一个相当大的主题。