今天要将介个Excel表合并到一个表中,本人是将要合并的表都写入到内存的DataTable中,然后统一将DataTable中的记录,更新到目的表里。代码如下:
OleDbConnection desConn = createConnection(txtDes.Text);//获取数据源连接
OleDbCommand cmd = desConn.CreateCommand();
desConn.Open();
DataView dv = desTable.DefaultView;//要更新到Excel中的表
dv.Sort = "Number ASC";
foreach (DataRowView drv in desTable.DefaultView)
{
string cmdText = "update [Sheet1$] set ArrivedTime='" + drv["ArrivedTime"].ToString() + "' where Number="+drv["Number"].ToString();
cmd.CommandText = cmdText;
cmd.ExecuteNonQuery();
}
试了很多次,编译运行都没有错误,就是那个目的表中的数据没有被更新,后来才发现没有关闭数据库连接,加入 desConn.Close();就OK了。所以我想OleDB对Excel的操作可能也是基于事务的吧。