【问题标题】:SSIS with Excel sheets带有 Excel 工作表的 SSIS
【发布时间】:2012-10-26 12:31:40
【问题描述】:

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

【问题讨论】:

    标签: sql-server-2008 excel ssis


    【解决方案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
    

    【讨论】:

    • 你能否再给我一些描述,因为我不知道如何编辑 C# 代码......
    • 这是 VBA 代码,而不是 C#。在“开发人员”菜单下,单击 Visual Basic。右键单击当前工作簿,然后选择插入...模块。将上面的代码粘贴到窗口中。您必须为正在使用的文件路径、文件名和密码自定义代码。如果您没有“开发者”菜单,请在此处查找启用它的帮助:techonthenet.com/excel/macros/visual_basic_editor2007.php
    【解决方案2】:

    根据 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

    【讨论】:

      【解决方案3】:

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

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

      不过,这是我的建议。使用 excel 创建一个新的输入数据源,然后使用任何方法来导入这些新数据。

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多