SQL Server使用OPENROWSET导出到Excel

时间:2009-05-26 10:11:45

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

我使用以下声明成功导出到excel:

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

是否有任何标准方法可以使用此模板为excel表单指定一个新名称,以便模板永远不会被写入,或者我是否需要进行一些解决方法?

在人们的经历中,最好的方法是什么?

3 个答案:

答案 0 :(得分: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运行的位置相关

答案 1 :(得分:1)

你不能先制作模板的副本,然后将副本的文件名传递给OPENROWSET吗?

答案 2 :(得分:0)

您可以在一个位置使用模板,而在另一位置使用数据文件。 运行脚本时,它将删除旧文件并生成新的数据文件。

 EXEC xp_cmdshell 'del D:\template.xls'
 EXEC xp_cmdshell 'copy C:\template.xls D:\template.xls'

 INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
 'Excel 8.0;Database=D:\template.xls;', 
 'SELECT * FROM [SheetName$]') 
  SELECT * FROM myTable