我正在尝试编写Excel应用程序级加载项。它对数据库进行SQL查询,并使用其结果填充工作表。我想,应该很简单......但不是。 有没有办法将DataTable插入excel工作表?像这样:
using (SqlConnection connection = new SqlConnection(connectionString))
{
string cmdString = "SELECT * FROM [Table];" // Simplifyed query, in my add-in I need to JOIN 3 tables
SqlCommand cmd = new SqlCommand(cmdString, connection);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
// What I need to write here to insert my DataTable contents into worksheet?
}
也许,我应该使用另一种方法(不是DataTable)?但是,我的查询最多可返回包含4列的100000行数据。因此,我认为,逐个细胞的粘贴是行不通的。
答案 0 :(得分:0)
如果您准备跳过几个环节,那么CopyFromRecordset是我见过的最快的方式:
http://msdn.microsoft.com/en-us/library/office/ff839240(v=office.15).aspx
我可以使用CopyFromRecordset在几秒钟内将SQL Server中的一百万行填充到Excel中。
基本上,您需要创建记录集而不是数据表,并且需要使用ADO(或DAO)。就个人而言,我喜欢将此代码与其他所有代码分开,并且仅将ADO用于此功能,因为它具有固有的弱点。例如,你不能使用"使用"与ADO连接等
这是一个更完整的示例(在VB中,但很容易更改为C#):