我们可以使用OleDbConnection作为一个数据源连接到Excel文件。在此之后,我们使用DbDataReader中来访问我们想要的Excel数据。然后,我们可以使用使用SqlBulkCopy从DataReader复制数据到目标SQL Server表。我们所需要的仅仅是以下代码,
//连接字符串到Excel工作簿
string excelConnectionString = @"Provider=Microsoft .Jet.OLEDB.4.0;Data Source=Book1.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
//创建连接到Excel工作簿
using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
{
OleDbCommand command = new OleDbCommand ("Select ID,Data FROM [Data$]", connection);
connection.Open();
//创建DbDataReader对数据工作表
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server 连接字符串
string sqlConnectionString = "Data Source=.; Initial Catalog=Test;Integrated Security=True";
// 大量复制到SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "ExcelData";
bulkCopy.WriteToServer(dr);
}
}
}
该SqlBulk将以最高性能来实现导入过程这个想法和代码来自David Hayden的博客文章,
http://davidhayden.com/blog/dave/archive/2006/05/31/2976.aspx
相关帖子:
http://social.msdn.microsoft.com/Forums/en-US/vbide/thread/15e9e292-247c-45dd-8510-6f1325fbc404/
http://social.msdn.microsoft.com/Forums/en-US/vbinterop/thread/3e9e8441-36be-4f70-826b-51badb9a9bb3/