2010-01-12 226 views
4

我有一個SSIS包,可以將數據從SQL Server 2005數據庫上的表導出到Excel電子表格中。 有問題的電子表格有15張工作表,我正試圖在其中一張工作表上填充值。SQL Server 2005 SSIS數據傳輸SQL到Excel損壞Excel文件

我有一個模板文件,我克隆成導出目標(一個簡單的文件系統任務)。這個模板文件是有效的,並且沒有損壞。

然後我有我的數據流任務,它使用SQL查詢作爲數據源。如果我預覽這個,一切都很好。然後我刪除所有列中的一個(一個int數據類型)。

我有一個excel數據源(這是上面提到的目標電子表格),我將這兩個鏈接在一起,並跨所選的單個列。當我預覽時,我得到第一個提示,說明有什麼不對:

顯示預覽時出錯。

附加信息:

索引和長度必須引用位置的字符串內。

參數名稱:長度(mscorlib程序)

當我運行該程序包,它通過確定,報告說我有1行跨複製。當我打開電子表格時,我收到以下錯誤:

文件錯誤:數據可能已經丟失

然而,電子表格還是加載,當我去片我一直在試圖填充,它創建了一個來自不同工作表的文本的新列。

當我嘗試使用SSIS包中的整列列表時,它似乎從電子表格的其他區域提取數據,這導致我認爲該過程不知何故破壞了電子表格。

我最初的想法是,也許這是一個服務包尚未部署的問題,但我觀察到SQL 2005 RTM和SP3上的這種行爲安裝,並且有點卡住了。

我會非常感謝任何有過類似經歷並且能夠提供幫助的人。由於

+1

不同意'屬於serverfault.com'近距離投票。這是開發環境中的編程問題。該代碼甚至還沒有打到任何服務器。 – 2010-01-12 14:26:53

回答

6

我們已經到了這個底部。

爲了使數據以正確的格式顯示,電子表格開發人員將一行隱藏的值作爲電子表格的第一行。如果你想讓你的號碼成爲數字,這是你必須做的事情。

因此,一個0已被放置在細胞中其列是是數字,在日期欄的每個單元的日期,和一個撇號(')用於所有文本列。

後者不是絕對必要的,當他們被刪除時,電子表格似乎開始工作。

但是,這一點的特殊性在於電子表格在整個運輸環境中都能正常工作。只是在當地的發展過程中出現了問題。

如果任何人可以闡明爲什麼這是,那麼它將不勝感激。

1

I have an excel data source (which is the target spreadsheet as mentioned above), and I link the two, carrying across the single column selected. When I preview, I get the first hint that something is wrong:

There was an error displaying the preview.

ADDITIONAL INFORMATION:

Index and length must refer to a location within the string.

Parameter name: length (mscorlib)

When I run the package, it goes through ok, reporting that I have 1 row copied across. When I open the spreadsheet, I get the following error:

File Error: data may have been lost

你試過重新創建此目標的組成部分?這是一個很好的開始,聽起來它已經變得腐敗(不確定是否腐敗是一個合適的詞,但它發生在我發現的SSIS中很多)。在探索其他可能性之前,我通常嘗試更換問題組件。

+0

感謝您的回覆。有用的東西嘗試,因此+1,但沒有解決我的問題。我最終完全替換了數據流任務,但發生了同樣的問題。不過,我設法擺脫了預覽錯誤。在Excel中刪除表單名稱中的空格似乎是這樣做的,儘管我並不完全相信。 – 2010-01-12 15:32:09

+0

嗯,我也注意到它不喜歡錶單中的空格。 – ajdams 2010-01-12 16:55:44

2

我曾在預覽完全相同的錯誤:

「索引和長度必須引用位置在字符串中

參數名:長度(mscorlib程序)」

之一Excel文件中的sheetname包含一個空白字符以及一個連字符。沒有關係,哪張紙上有空白或連字符,因爲我必須刪除所有這些才能使用預覽。

1

當我嘗試使用SSIS查看Excel文件的預覽時,顯示此消息。

我找到的解決方案是更改工作表的名稱。

它必須以字母開頭,您必須刪除所有空格。