Экспорт SQL Server в Excel с помощью OPENROWSET - PullRequest
4 голосов
/ 26 мая 2009

Я успешно экспортирую в Excel со следующим утверждением:

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

Есть ли какой-либо стандартный способ использовать этот шаблон, указав новое имя для листа Excel, чтобы шаблон никогда не записывался или мне нужно было придумать какое-нибудь решение?

Какой лучший способ сделать это в опыте людей?

Ответы [ 2 ]

7 голосов
/ 26 мая 2009

Вы должны использовать динамический 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 голос
/ 28 ноября 2009

Не могли бы вы сначала сделать копию шаблона, а затем передать имя файла копии в OPENROWSET?

...