Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top