Excel读取到DataTable:
string ConnnectionString = string.Format(@"Provider='Microsoft.Ace.OLEDB.12.0';Data Source={0};" + "Extended Properties=Excel 8.0;", filePath);
OleDbConnection Excelconn = new OleDbConnection(ConnnectionString);
Excelconn.Open();
DataTable tb = Excelconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
OleDbCommand Excelcomm = new OleDbCommand();
string ExcelCommText = string.Format("select * FROM [{0}]", tb.Rows[0]["TABLE_NAME"].ToString().Replace("'", ""));
OleDbDataAdapter sda = new OleDbDataAdapter(ExcelCommText, Excelconn);
DataSet ds = new DataSet();
sda.Fill(ds);
Excelconn.Close();
DataTable tbAR = ds.Tables[0];
ARImport(tbAR);
ds.Clear();
GC.Collect();
GC.WaitForPendingFinalizers();
public void ARImport(System.Data.DataTable dt) {
SqlConnection conn = new SqlConnection(WFContext.Database.Connection.ConnectionString);
//打开连接
conn.Open ( );
//2.创建事物
SqlCommand sqlCmd = new SqlCommand("DELETE FROM [workflow].[CertificationARImport]", conn);
sqlCmd.ExecuteNonQuery();
SqlTransaction sqlTran = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
SqlBulkCopy oBC1 = new SqlBulkCopy (conn, SqlBulkCopyOptions.Default, sqlTran);
//实例化批量添加记录的类
oBC1.BatchSize = dt.Rows.Count;//需要添加的记录数量
//oBC1.BulkCopyTimeout = 300; //设置添加数据的最长时间
oBC1.DestinationTableName = "表名";//将数据添加到数据库的表中
//oBC1.ColumnMappings.Add ( "CollegeID", "CollegeTeacherID" );//第一个参数是源数据列,第二个是目标数据库数据列
oBC1.WriteToServer ( dt );//dtAddData是源数据表
sqlTran.Commit ( );//提交事务
}
catch (Exception ex)
{
sqlTran.Rollback ( );//出现错误事务回滚
throw ex;
}
finally
{
conn.Close ( );//关闭连接
}
}