Excel加载项将数据从工作表传输到数据库:文件路径问题

时间:2009-05-14 09:13:45

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

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

而且我需要将每列的数据插入到SQL Server数据库中的表的单独列中。有什么建议和代码可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

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

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

完成后,您可以选择将已完成的工作簿保存为Excel Addin文件(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

答案 1 :(得分:0)

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

Example

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

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