2012-10-26 46 views
0

我已創建SSIS包從Excel LODA數據到數據庫中。我的問題是那些用密碼保護的excel文件(我知道密碼)在我手動刪除密碼的那一刻。有什麼方法可以在ssis中自動化,因爲我有200個excel文件。SSIS用Excel表

回答

1

這可能會或可能無法正常工作根據貴公司的安全策略(或其監控),但你可以寫打開所有200個文件,並在一個臨時的「無保護」目錄保存他們沒有密碼的快速宏。然後運行您的SSIS腳本,並完成時,刪除所有200個文件(與安全缺失者如Eraser

Sub ManagePWords() 

Dim f(1 To 200) As Variant 
Dim i As Integer 
Dim origpath As String, temppath As String 
Dim wb As Excel.Workbook 

    origpath = "c:\where_files_are_now\" 
    temppath = "c:\where_files_are_now\unprotected\" 

    f(1) = Array("filename1", "password1") 
    f(2) = Array("filename2", "password2") 
    'keep going for all 200 files 

    For i = 1 To UBound(f) 
     Set wb = Application.Workbooks.Open(origpath & f(i)(0), , , , f(i)(1)) 
     wb.SaveAs temppath & f(i)(0) & ".xlsx", , "" 
     wb.Close 
    Next i 

End Sub 
+0

能否請您給我一些更descreption,因爲我不知道如何編輯C#代碼... –

+1

這是VBA代碼,而不是C#。在「開發人員」菜單下,單擊Visual Basic。用鼠標右鍵單擊當前工作簿,然後選擇插入...模塊。將上面的代碼粘貼到窗口中。您必須自定義您正在使用的文件路徑,文件名和密碼的代碼。如果您沒有「開發」菜單,看看這裏的幫助使其:http://www.techonthenet.com/excel/macros/visual_basic_editor2007.php – ExactaBox

0

根據MSDN,「你不能連接到一個受密碼保護的Excel文件。」

http://msdn.microsoft.com/en-us/library/ms139836(v=sql.105).aspx

有可能是通過在那裏你讀出的excel表到CSV什麼要處理自定義腳本來訪問它的方式。或者也許成爲一個對象。但是,我還沒有找到任何幫助。

下面是從SQL Server中央一個論壇的帖子可能會有所幫助。它有一個PowerShell腳本樣本(需要登錄)

http://www.sqlservercentral.com/Forums/Topic885800-148-1.aspx

不管是什麼,我認爲你將不得不獲取數據進出受保護的Excel工作表,然後才能對其進行處理。

UPDATE: CozyRoc銷售連接管理器,可以讓你用密碼保護的Excel工作表的連接。

http://www.cozyroc.com/ssis/excel-connection

0

Vinnies答案給了我另一種思路 - 如果你會用什麼樣的Excel文件的apdater。

用excel(vba)打開受保護的文件很容易,然後,您可以將所有文件全部導入到該工作簿或創建它們的副本,這些副本不受保護,或者甚至可以將數據直接複製到ssis/sql-服務器。

然而,這將是我的建議。使用excel創建一個新的輸入數據源,然後使用任何來導入這個新數據。