1

我已经创建了 ssis 包来将 loda 数据从 excel 到数据库。我的问题是在我手动删除密码的那一刻,那些受密码保护的 excel 文件(我知道密码)。有什么方法可以在 ssis 中实现自动化,因为我有 200 个 excel 文件。

4

3 回答 3

2

根据您公司的安全策略(或对其进行监控),这可能会或可能不会起作用,但您可以编写一个快速宏来打开所有 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
于 2012-10-26T14:57:08.950 回答
0

Vinnies 的回答给了我另一个想法——如果你使用像 excel 文件这样的 apdater 会怎样。

使用 excel (vba) 打开受保护的文件很容易,然后,您可以将文件全部导入此工作簿或创建它们的副本,这些副本不受保护,或者您甚至可以将数据直接复制到 ssis/sql-server。

但是,这将是我的建议。使用 excel 创建输入数据的新源,然后使用任何方法导入这些新数据。

于 2012-10-26T13:18:30.060 回答
0

根据 MSDN,“您无法连接到受密码保护的 Excel 文件。”

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

可能有一种方法可以通过自定义脚本访问它,您可以在其中将 excel 表中的内容读出到要处理的 csv 中。或者可能变成一个对象。但是,我还没有找到任何帮助。

这是来自 SQL Server Central 的论坛帖子,可能会有所帮助。它有一个 powershell 脚本示例(需要登录)

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

无论如何,我认为您必须先从受保护的 Excel 工作表中取出数据,然后才能对其进行处理。

更新:CozyRoc 出售一个连接管理器,可以让您使用受密码保护的 Excel 表格作为连接。

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

于 2012-10-26T13:09:13.057 回答