動態變換excel檔名並匯入資料
有網友說想要依照日期變更excel目的地檔名來匯sql server的資料到excel
這個目前也是用ssis實作出來了,過程其實還蠻簡單的
step1:先實作一個單純的匯入excel的資料流程工作
step2:以上的excel目的地先指定好位置
這樣做完只是單一個固定的檔名。接下來我們就可以利用這個做好的excel目的地來當範本excel
我為了方便demo用,我先將該檔案都放在c:下,另外我為了demo檔名會變動,所以我使用了for迴圈這個元件
當然一般做排程的話是不用for迴圈,我只是為了模擬excel檔名變動的部份
step3:拉一個for迴圈
step4:宣告一個變數 i
step5:編輯for迴圈的內容,我只讓迴圈跑2號,確定檔名會變即可
step6:接下來拉一個指令碼工作,這裡就是重點,從這裡動態改變excel檔名
step7:再宣告一個變數,這個變數是要存放excel目的地名稱的,你可以先放預設值,一定要寫哦!不要空白,先指定一個確定存在的檔名及路徑
可以直接先指定先前做好的tempexcel檔
step8:接下來編輯for迴圈容器中的指令碼工作元件,我使用vb語法,並將我的 i 變數傳入當作檔名之一
,最後產生的excel檔名會寫到targetexcel這個變數內容,輸入完後點編輯指令碼
step9:以下為動態產生檔名的程式碼
1: '下面這個tempfile的內容我目前是寫死在程式碼中,當然這也是可以變動,就舉一反三囉
2: Dim tempfile As String = "c:\testexcel.xls"
3: '先判斷範本excel是否存在
4: If File.Exists(tempfile) Then
5: '如果存在的話,組excel檔名用年月日+i
6: Dim newfile As String = String.Format("c:\{0}_{1}.xls", System.DateTime.Now.ToString("yyyyMMdd"), Dts.Variables("i").Value.ToString())
7: '複製一份
8: File.Copy(tempfile, newfile)
9: '寫到變數中
10: Dts.Variables("targetexcel").Value = newfile
11: End If
step10:接下來拉一個資料流程工作
step11:在這個資料流程工作中一樣拉來源及目的地excel
step12:接下來點excel目的地,選擇新增
step13:這時候excel檔案路徑一樣可以先填入範本excel的檔名及位置
step14:接下來選擇資料來源區的excel連接管理員1,來變動他的excelfilepath
step15:選擇excelfilepath的屬性後,點運算式旁按鈕
step16:將targetexcel這個變數拖曳下來
step17:好了,執行看看吧
結果內容
ps:範本excel記得要把除了標題欄以下的欄位做清除內容及刪除的動作,不然所匯入的資料會變成
在更下方,因為excel會記錄之前資料的位置會用append的方式寫入
‧覺得文章不錯請給我一個『讚』作為鼓勵喔!