使用OleDB命令在Excel中更新整行

我想清空/清除整个Excel选项卡。 但似乎没有任何工作

我尝试了以下方法:

OleDbConnection connection = new OleDbConnection(connectionString); OleDbCommand command = new OleDbCommand("Select * FROM [Sheet1$]", connection); OleDbCommand count = new OleDbCommand("Select count(*) FROM [Sheet1$]", connection); DataSet dataset = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.SelectCommand = new OleDbCommand("Select * from [Sheet1$]", connection); adapter.Fill(dataset); for (int i = 0; i < dataset.Tables[0].Rows.Count; i++) { DataRow dtRow = dataset.Tables[0].Rows[i]; foreach (DataColumn col in dataset.Tables[0].Columns) { if(col.DataType == typeof(string)) dataset.Tables[0].Rows[i][col] = ""; } } dataset.Tables[0].AcceptChanges(); adapter.Update(dataset.Tables[0]); 

如果你的Excel文件有主键,你可以使用OleDbCommandBuilder,如果没有,OleDbDataAdapter或OleDbCommand将是更好的方法.adapter.you不能直接使用Update(dataset.Tables [0]),这里是代码:

  OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", myConnection); DataTable dt = new DataTable(); adapter.Fill(dt); string updateSQL = string.Format(@"UPDATE [Sheet1$] SET Status =? WHERE ID IN ( SELECT TOP 5 ID FROM [Sheet1$] WHERE Status <>? OR Status IS NULL )"); adapter.UpdateCommand = new OleDbCommand(updateSQL, myConnection); adapter.UpdateCommand.Parameters.Add("@Status", OleDbType.Char, 255).SourceColumn = "Status"; adapter.UpdateCommand.Parameters.Add("@OldStatus", OleDbType.Char, 255, "Status").SourceVersion = DataRowVersion.Original; dt.AsEnumerable().Take(5).ToList().ForEach(o => o.SetField("Status", @"Imported")); dt.AcceptChanges(); adapter.Update(dt); 

我想操纵excel文件, NPOI是一个更好的select。

它的开源和易于使用。

我以前使用OLEDB来读取excel文件,但从不尝试使用它更新数据。 如果你必须使用它,请确保你的excel文件不是readony。