2014-02-19 39 views
1

我在Visual Studio 2008中創建了一個SSIS包,其中包含一個SQL select語句並填充一個Excel表,該Excel表被複制自包含所有格式化和單元格設置的模板文件。SSIS excel格式不會從目標編輯器中的文本字段中更改**在附近工作**

我遇到的問題是,無論我做什麼,我都無法將excel目標格式更改爲其他任何格式,它會覆蓋源目標並將十進制數字設置爲'1.50始終將'添加到字段。

我試着插入一行作爲一些建議,因爲人們認爲這是SSIS掃描格式類型的地方。但是,在高級編輯器中該字段總是以Unicode string [DT_WSTR]的形式出現,並且如果我更改它們,總是默認回來。

請有人幫忙!很高興提供任何額外的信息,如果我錯過了什麼,我已經看到一些相同問題的帖子,但沒有任何解決方案似乎工作或我失去了其他東西。

****更新**** 找出推薦的修補程序沒有工作的原因,這是因爲在excel目標中使用select語句而不是選擇表。 enter image description here

如果更改格式,這基本上會消除任何更改。

因此,我最終決定的是使用基本表數據訪問模式創建一個僅數據表(隱藏),然後在所有格式都準備好的前端工作表中引用並使用=value(C1)公式只返回值。保護細胞以隱藏配方。

+0

的輸出是什麼在SQL查詢的列上,我想這可能是'Unicode',你有沒有試過改變這個以及輸出? –

+0

在下面的答案中看到我的建議...以及與以下步驟(3)相關的問題:如果您不使用模板,但使用數據流的按鈕生成新的目標電子表格......那麼,什麼格式被提供給有問題的列? –

+1

只需將其扔出:在導入Excel數據時,在連接字符串中使用IMEX可幫助處理數據類型。也許這對導出數據也有幫助。在'Excel IMEX'上搜索,你會得到很多點擊。 –

回答

1

我發現,當我在SSIS中更改Data Flow Task時,輸出到Excel(或從Excel導入)時,我經常需要「重新開始」,否則SSIS將以某種方式保留舊的Data Flow Task的某些屬性:數據類型,列位置......對我來說,這往往意味着:

1)刪除數據流任務,內的源和目標物體並可同時刪除/重新創建連接對象的Excel電子表格。我已經完成了足夠多的時間,現在我可以通過複製/粘貼我的源和目標名稱以及從記事本窗口保存自己的時間,並選擇提醒我引用對象的名稱(表和文件,分別)。

2)記住重建ARROW的元數據,也:你改變後和/或重新創建源對象,你要記得雙擊旁邊的箭頭,重新創建目的地。這顯示了箭頭的元數據,但它也創建/更新了箭頭的元數據。

3)重新創建目的地時,從以前的運行中刪除SPREADSHEET(或重命名或移動等),並讓SSIS重新創建它。 (在你的新目標對象,有一個按鈕來創建電子表格,使用元數據。)


如果您仍然有上述問題後,看看你的數據類型...確保你已經選擇了SSIS支持的SQL數據類型。

在下面的鏈接中,在頁面向下的大約2/3處,您會找到一張表「Integration Services數據類型到數據庫數據類型的映射」,SSIS數據類型在第1列( 「數據類型」),並在第3列的T-SQL等效數據類型( 「SQL服務器程序(SqlClient)」):

Integration Services Data Types

希望幫助...

+1

@ Doug-Ivison感謝您的回覆,即使在完成上述操作後,問題仍然存在,但是我已經知道爲什麼它會這麼做。在這個過程中,而不是選擇表是SSIS我正在使用sql select(SELECT * FROM [Sheet1 $ b5:j5]),以便數據出現在單元格B5中。它在這一點上的數據類型的崩潰,不能改變。 只有我想到的解決方法是在我想要的格式旁邊創建兩個空白列並將其格式化,然後放置一個= Value(B6)以返回自動填充的單元格的值! 感謝您的回覆,最後的投票和接受完成作爲一個很好的答案。 – GPH

+0

@Gavlaaa有趣的問題,以及解決方案的有趣想法。當您看到是否已解決問題時,請考慮留下評論(或在問題結尾添加「更新:」)。祝你好運。 –

相關問題