[英]Update an entire row in Excel using OleDB command
我正在尝试清除/清除整个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会是更好的方法。适配器。不能直接使用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对您来说是一个更好的选择。
它是开源的,易于使用。
我以前使用OLEDB读取excel文件,但从未尝试使用它来更新数据。 如果必须使用它,请确保您的excel文件未准备就绪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.