我创建SSIS包从Excel洛达数据到数据库中。 我的问题是那些擅长与密码(我知道密码)在一分钟我正在码的手动删除密码proteced文件。 有没有办法在SSIS实现自动化,因为我有200个Excel文件。
Answer 1:
这可能会或可能无法正常工作根据贵公司的安全策略(或其监控),但你可以写打开所有200个文件,并在一个临时的“无保护”目录保存他们没有密码的快速宏。 然后运行您的SSIS脚本,并完成时,删除所有200个文件(与安全缺失者如橡皮擦 )
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
Answer 2:
根据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
Answer 3:
Vinnies答案给了我另一种思路 - 如果你会用什么样的Excel文件的apdater。
打开用Excel(VBA)保护的文件很容易,然后,你可以导入你的文件中的所有本工作簿或创建它们的副本,是不受保护的,你甚至可以将数据直接复制到SSIS / SQL服务器。
然而,这将是我的建议。 使用Excel来创建你输入一个新的数据源,然后使用任何导入这个新的数据。
文章来源: SSIS with Excel sheets