我已經建立了一個sql任務,將完整的名稱結果集加載到一個對象變量中,我將它連接到一個foreach循環,逐行掃描整個對象。我不確定接下來的步驟。如果我可以創建一個數據流任務,並以某種方式設置目標變量等於每個循環映射變量,這將是很好的。有小費嗎?如何動態創建excel文件與ssis
回答
根據你所描述的,所有你需要做的是如下:
1:execute SQL task
返回Excel文件名,您已經有了一個名單。
將輸出連接到
Foreach Loop Container
並開始迭代每個名稱。在容器內部,您需要的第一項任務是
Script Task
,它用於創建每個excel文件。我認爲excel格式對於您需要填充的所有內容都是相同的。您需要創建一個具有指定的所需列標題名稱的新模板。
對於
script task
,從容器取映射變量作爲read only
變量,你需要創建另一個變量,將其設置爲read and write
,假設它被命名爲A
;用於存儲每個動態excel文件路徑,並編輯腳本。如果您熟悉
C#
,那麼您將很容易爲每個迭代名稱使用Copy
模板。
代碼將是這樣的:
Using System.IO;
...
...
...
string source = "C:\\template.xlsx";//need to be a full path
string target = "C:\\" + Dts.Variables["that read only variable"].Value.Tostring() + ".xlsx"
File.Copy(source,target);
Dts.Variables["A"].Value = target; //important!
Script task
後,需要一個有限的數據流的任務,內部的,則需要一個excel destination
,棘手的部分是(1):你需要設置一個動態的ExcelFile path
屬性爲excel connection manager
,我建議第一次使用現有的excel來緩存映射,然後對於動態連接部分,選擇A
,這是read and write
變量從script task
。用於填充數據到Excel,你需要所有的
varchar
類型轉換爲nvarchar
,這可以用做到無論derived column
或data conversion
最後但並非最不重要的,同時爲
connection manager
設置delay validation
到TRUE
,excel destination
和整個data flow task
,這對於動態過程是非常重要的。
以上所有可能是一個簡單的解釋,但這是主要思想。 (1)如果您沒有安裝數據訪問引擎,則Excel在SSIS中非常挑剔,可能無法成功填充數據。對於Excel可能需要.JET
(舊)或.ACE
(新)提供者。(2)如果您的標題行不是簡單的第一行,您可能還需要考慮OPENROWSET
屬性。
- 1. SSIS 2012 OLE DB與EXCEL動態工作表創建
- 2. 如何創建SSIS動態連接
- 3. 如何使用SSIS創建動態數量的輸出文件?
- 4. SSIS動態人口的Excel文件名
- 5. 如何動態地在Excel中創建
- 6. 計劃的SSIS包創建excel文件,日期爲文件名
- 7. 如何動態創建安裝文件
- 8. 如何創建動態文件視圖?
- 9. 如何創建動態視頻文件?
- 10. 如何動態地創建KML文件
- 11. 如何動態創建類文件?
- 12. 如何在SSIS中爲Excel文件設置動態文件路徑?
- 13. SSIS - 動態創建三個日誌文件
- 14. 使用C#.net和Microsoft Excel Interop動態創建Excel文件?
- 15. SSIS創建空文件
- 16. 創建動態路徑對於SSIS與文本文件的SSIS日誌提供日誌
- 17. 從Excel模板動態創建的Excel不能正確寫入數據-SSIS
- 18. Log4j創建動態文件
- 19. 創建「動態」XML文件?
- 20. 動態創建的文件
- 21. 動態創建.ics文件
- 22. 動態創建文件
- 23. 動態創建XML文件
- 24. 動態創建文件夾
- 25. 動態創建excel文件並自動下載
- 26. 如何構建動態SSIS包?
- 27. 自動從Excel創建文本文件
- 28. 如何在動態創建的目錄中創建文件?
- 29. 創建Excel文件
- 30. 如何在SSIS 2008中創建動態IN查詢?
你的結果對象是什麼? – LONG
我的結果對象只是一個列和80個不同名稱的表格 – jdd
我的不好,我的意思是這些名稱用於什麼?是用於填充的數據還是用於動態過程的表或數據庫名稱? – LONG