【问题标题】:Excel add-in transferring data from sheets to database: file path problemExcel 加载项将数据从工作表传输到数据库:文件路径问题
【发布时间】:2009-05-14 09:13:44
【问题描述】:

我希望为 excel 创建一个插件,它可以读取当前工作表数据,然后将其插入数据库。数据库连接需要文件位置。因此,不能应用这种方法,因为我必须发送我当前打开的文件并且无法指定文件路径。

此外,我需要将每列的数据插入到 SQL Server 数据库中表的单独列中。有什么建议和代码可以提供帮助吗?

【问题讨论】:

  • 天哪,看看这个问题的标题!
  • 伙计,你得改一下标题,人们不会点击这样标题的链接。
  • 我更改了标题并进行了一些格式化以使其可读。
  • 不知道谁投票赞成这样的问题!不过,干得好,@Splattne。

标签: c# sql-server visual-studio-addins object-model excel-addins


【解决方案1】:

您可以使用 VBA 使用 Excel 创建 Excel 加载项。您需要在 VBA 编辑器中添加对 Microsoft ActiveX 数据对象 (ADO) 的引用(使用工具 -> 引用),然后您将拥有对 Connection、Command、RecordSet 等对象的完全访问权限。

如果我这样做,我会让用户使用表单为每个导入批次指定数据库/表/列。然后我会创建一个 Connection 对象并循环遍历每一行数据以根据该行中的数据创建并执行插入命令。

完成后,您可以选择将完成的工作簿另存为 Excel 插件文件 (xla),该文件可以分发给其他人。

下面是插入代码的示例:

Dim conn As New Connection
Dim comm As New Command
conn.Open YourConnectionString
Set comm.ActiveConnection = conn
comm.CommandText = "insert <table> (<column1>, <column2>, <column3>, ..., <columnN>)  values (" + <value1> + ", '" + <value2> + "', " + <value3> + ", '" + <valueN>+ "')"
comm.Execute
conn.Close

【讨论】:

    【解决方案2】:

    必须在 Excel 中完成吗? 您可以使用一个简单的 ADO.NET 应用程序来执行此操作,为 Excel 指定一个 OleDb 提供程序,为 SQL 指定另一个提供程序。

    Example

    技术上有lots of articles。您可以在 SQL Server Integration Services (SSIS,以前称为 DTS) 中使用最少的代码执行相同的操作。这是old article on that

    您也可以在 Excel 中执行此操作。使用 VS2005,您将使用 VSTO - Visual Studio Tools for Office;我认为VSTO的功能是包含在VS2008 Professional中的。 VS+VSTO(或 VS2008)允许您为包括 Excel 在内的 Office 应用程序创建插件。在 AddIn 中,您可以在代码中做任何您喜欢的事情,包括使用 System.Data.SqlClient 将数据插入 SQL Server。

    【讨论】:

      猜你喜欢
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多