我们可以使用 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/