我正在尝试更新 excel 中的单个单元格,以下代码在 excel 2007 上完美运行,我什至不需要安装 AccessDatabaseEngine!它应该正常工作!但是当我在 Excel 2010 或 2013 上运行代码时。第一行仅由最后一行数据更新!例如,如果我想更新单元格 A 中的 10 行,则只有 A1 会被应该存储在 A10 中的数据更新!
我假设 ACE.OLEDB.12.0 驱动程序有一些错误。我希望任何已经解决了这个问题的人在这里分享解决方案。
请记住,我已经安装了 AccessDatabaseEngine.exe 并尝试使用 2007 和 2010 版本并获得相同的结果!
如果有人可以提供帮助,我真的很感激这几个月的股票!
void my(){
string filelink = "C:\\test.xlsx";
try
{
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filelink + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO\"");
MyConnection.Open();
myCommand.Connection = MyConnection;
sql = "UPDATE[sheet1$A1:A1] SET F1 = '" + textBox1.Text.ToString() + "'";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
sql = "UPDATE[sheet1$B1:B1] SET F1 = '" + textBox2.Text.ToString() + "'";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
sql = "UPDATE[sheet1$B2:B2] SET F1 = '" + textBox3.Text.ToString() + "'";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
MyConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}