2009-05-26 86 views
3

我成功出口用下面的语句擅长:SQL服务器导出到Excel与OPENROWSET

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

是否有使用这个模板Excel工作表中指定一个新的名字任何标准的方式,使从未模板写到或者我必须想出一些解决方法?

在人们体验中做到这一点的最佳方式是什么?

+0

哦,幸运的人。我已经花了2个小时试图运行这个并获得各种错误。 (使用2008SP2) – 2015-10-06 14:24:26

回答

7

你必须使用动态SQL。 OPENROWSET等只允许文字作为参数。

DECLARE @myfile varchar(800) 

SET @myfile = 'C:\template.xls' 

EXEC (' 
insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
''Excel 8.0;Database=' + @myfile + ';'', 
''SELECT * FROM [SheetName$]'') 
select * from myTable 
') 

记住:路径是相对于其中的SQL Server运行

+0

这很好 - 但我仍然必须首先将模板放在那里,所以我不能在SQL中想出名称,我必须先以编程方式创建电子表格。 – JohnIdol 2009-05-26 12:01:08

1

你不能让你的模板的复制,在复制的文件名传递到OPENROWSET?

相关问题