-- 目標表已存在
INSERT INTO 目標表 SELECT * FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\test.xls', sheet1$)
-- 目標表不存在(自動建表)
SELECT * INTO 目標表 FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\test.xls', sheet1$)
INSERT INTO OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\test.xls', sheet1$)
SELECT * FROM 來源表
-- 導出表
EXEC master..xp_cmdshell 'bcp 資料庫.dbo.表名 out "c:\test.xls" /c -S"伺服器" -U"用戶" -P"密碼"'
-- 導出查詢
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -S"伺服器" -U"用戶" -P"密碼"'
注意:BCP產出為**純文字檔**(CSV/Tab分隔),非真正Excel二進位格式(.xls/.xlsx)。
利用sp_OACreate建立ADODB.Connection,連接Microsoft Excel Driver (*.xls) ODBC驅動程式,動態建立Excel資料表結構(對應SQL型別→Excel型別:字串→Text(255)、整數→Int、日期→Datetime、貨幣→Money),再用OPENROWSET回寫資料。支援:
EXEC p_exporttb @tbname = '地區資料', @path = 'c:\', @fname = 'aa.xls'
HDR=YES:首列為欄位名稱。sheet1$:工作表名**必須加$符號**。