【问题标题】:Writing data back to SQL from Excel sheet从 Excel 工作表将数据写回 SQL
【发布时间】:2009-04-15 06:51:25
【问题描述】:

我知道可以将 SQL 数据库中的数据写入 Excel 工作表,但我正在寻找一种方法可以在 excel 中编辑数据,并在编辑后将其写回 SQL 数据库.

看来这不是excel中的功能,google也没想出多大用处。

【问题讨论】:

    标签: sql excel


    【解决方案1】:

    如果您想让 Excel 文件完成所有工作(从 DB 检索;操作;更新 DB),那么您可以查看 ActiveX 数据对象 (ADO)。您可以在以下位置获得概览:

    http://msdn.microsoft.com/en-us/library/ms680928(VS.85).aspx

    【讨论】:

      【解决方案2】:

      您需要 SQL Management Studio 中的导入/导出向导。根据您使用的 SQL Server 版本,打开 SSMS(连接到您想要的 SQL 实例),右键单击您要导入的数据库并选择任务..“导入数据”。

      在向导中,单击下一步(经过介绍屏幕)并从数据源下拉列表中选择“Microsoft Excel”。您指定 Excel 电子表格的路径和文件名,无论您是否有列标题。然后按下一步。只需按照向导完成,它将设置目标(可以是 SQL Server 或其他目标)等。

      SQL Server Books Online 提供了此过程的帮助,MSDN 提供了更多信息(演练)。

      如果您需要一些可部署/更强大(或更少向导驱动)的东西,那么您需要查看 SQL Server 集成服务(以获得更“企业”和安全意识的方法)。不过,对于您想要完成的事情来说,这可能有点矫枉过正。

      【讨论】:

        【解决方案3】:

        有一个名为“MySQL for Excel”的新 Excel 插件:http://www.mysql.com/why-mysql/windows/

        【讨论】:

        • 是的,但它只能在 Windoze 上运行。
        【解决方案4】:

        我只是需要这样做,而这个线程已经安静了很长时间,所以我认为提供最近的数据点可能很有用。

        在我的申请中,巡回销售人员使用 Excel 工作簿的副本来跟踪潜在客户通过贷款申请的进度。应用程序的当前阶段需要自动保存回远程 SQL 数据库,以便我们可以对其运行报告。

        从 Excel 更新数据库的拒绝方法:

        SSISOpenRowSet 都是允许 SQL Server 从 Excel 中提取数据的方法,当 Excel 工作簿位于未定义的位置时效果不佳用户计算机上的位置,当然不是当工作簿当前在 Excel 中打开时。

        ADO 现在虽然没有被弃用,但看起来很长。此外,我希望解决方案在面对可能未连接到互联网的用户时保持稳健。

        我还考虑在目标服务器上运行 Web API。 Excel 工作簿中的宏连接到 Web API 以传输数据。但是,有时允许 Web API 与外界对话会很痛苦。此外,在暂时失去 Internet 连接的情况下使其健壮的代码是痛苦的。

        采用的解决方案:

        我计划采用的解决方案是技术含量低的:电子邮件。 Excel 将数据通过电子邮件发送到 Exchange 服务器上托管的地址。公司中的每个人都安装了 Outlook,因此电子邮件是通过以编程方式将它们添加到 Outlook 发件箱来发送的。 Outlook 可以很好地处理用户离线时的情况。在服务器端,由任务计划程序定期启动的自定义 C# 可执行文件轮询收件箱并处理电子邮件。

        【讨论】:

        • 这个答案闻起来像"Contrived Complexity"。此外,除非“销售人员-贷款应用程序”关系严格是一对一的,否则一旦您有多个代表在同一​​个“帐户/应用程序”上工作,您就会遇到主要的data concurrency 问题。是的,同一帐户上的第一封电子邮件在更新中“获胜”,但来自第二个销售人员的第二封电子邮件以及现在过时的数据将覆盖第一封。
        【解决方案5】:

        你可以试试这些插件:

        www.QueryCell.com(我创建了这个) www.SQLDrill.com www.Excel-DB.net

        【讨论】:

          【解决方案6】:

          您可以使用 OPENROWSET 函数从 T-SQL 脚本操作 Excel 数据。示例用法是:

          更新 OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;DATABASE=c:\MySpreadsheet.xls', '从 MyTable 中选择 *') SET Field1='Value1' WHERE Field2 = 'Value2'

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-21
            • 1970-01-01
            • 2012-11-23
            • 1970-01-01
            • 2013-06-13
            • 1970-01-01
            相关资源
            最近更新 更多