从SQL Server查询将数据导入Excel

时间:2013-07-01 05:14:47

标签: c# sql-server tsql

我找到了一些方法将数据从SQL Server查询导入到Excel,如下所示,但它们似乎都不起作用

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
      'Excel 8.0;Database=D:\testing.xls;', 
      'SELECT * FROM [SheetName$]') select * from tblName

错误:

  

OLE DB提供商' Microsoft.Jet.OLEDB.4.0'不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。

3 个答案:

答案 0 :(得分:1)

如错误消息所示,SQL Server将无法使用此方法将数据传输到Excel。一种不需要编程的可能解决方案: 打开Excel,单击“数据”选项卡,“从其他源”,“SQL Server”。将打开一个窗口,提示输入服务器名称,提供由反斜杠分隔的服务器名称和实例名称。示例:localhost \ sqlexpress(如果您在PC上运行sql server express edition,则无论您安装SQL Server的服务器是什么,以及实例名称)。通过提供SQL Server中定义的用户标识和密码或仅单击Windows身份验证进行身份验证。然后,您将有机会选择表名。然后将数据传输到Excel表中,您可以通过右键单击它来随意刷新。 请指出您是否需要可能需要编程的备用解决方案。

答案 1 :(得分:0)

如果您有32位Office并且您不想卸载它,请尝试从Microsoft(64位)安装最新的AccessDatabaseEngine。要在不卸载32位版本的情况下安装它,请转到命令行中的下载目录并写入

AccessDatabaseEngine.exe /passive

然后在SSMS中,您可以使用代码导入Excel:

FROM OPENROWSET
('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\path\sheet.xlsx', [Sheet1$])

答案 2 :(得分:0)

您应该查看Pinal Dave's解决方案。此外,可能你有x64机器,因此由于驱动程序不可用而无法工作。查看this answer