1

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

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

4

2 回答 2

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
于 2009-05-22T04:45:25.030 回答
0

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

例子

很多关于该技术的文章。您可以在 SQL Server Integration Services (SSIS,以前称为 DTS) 中使用最少的代码执行相同的操作。这是一篇关于那个的旧文章

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

于 2009-05-14T09:53:30.893 回答