[SQL SERVER][SSIS]動態建立 Excel

[SQL SERVER][SSIS]動態建立 Excel

上一篇介紹過使用程式呼叫 SSIS 並傳遞參數,

但 SSIS 資料流程中的 Excel 目的地是固定的(不符合使用者需求),

所以這篇紀錄如何使用 SSIS 動態建立 Excle 目的地,

符合每天自動排程匯出Excel檔案不會被覆蓋。

 

新增主要路徑變數

image

 

新增 Excel 連接管理員並設定ExcelFilePath Expressions

image

 

@[使用者::RootPath]+ (DT_WSTR, 4) DATEPART( "yyyy", GETDATE() )+
(DT_WSTR, 2) DATEPART( "mm", GETDATE() )+
(DT_WSTR, 4) DATEPART( "dd", GETDATE() )+".xls"

 

image

Excel檔名預設會依日期建立。

 

控制流程

image

 

編輯執行SQL工作(Create Excel Table)

image

這裡需使用特別符號 `

image

 

資料流程

image

 

編輯Excel 目的地

新增Sheet(拿前面剛剛的語法)

create table `test`
(
`sys_value` nvarchar(19),
`sys_name` nvarchar(50),
`mapping_flag` nvarchar(1)
)

 

 

選取正確工作表名稱

image

 

設定欄位對應

image

 

結果

image

image

 

Excel內容

image

image

 

匯出22日Excel

image

這樣就有每天的Excle檔案內容了。

 

ps:Excel檔名部分有曾想增加時分秒,

但再設定Excle 欄位對應時就會發生錯誤(找不到Excel工作表),

雖然我有設定Package和Excle連接管理員DelayValidation = true,

但BIDS好像還是會檢查Excle是否有存在,

目前這部份還沒真正想到解決方法,如有知道的朋友請麻煩告知一下。

 

參考

Creating a dynamic excel file

SSIS and Dynamic Excel Destinations Follow up