2009-05-26 83 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?

相關問題