OLEDB更新excel细胞

oli*_*dev 3 c# oledb excel

我写了这个方法来更新excel单元格:

public void update(string fileName, string sheetName)
{
   string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileName) + ";Extended Properties=Excel 12.0";

try
{
   OleDbConnection oledbConn = new OleDbConnection(connString);

   oledbConn.Open();

  OleDbCommand cmd = new OleDbCommand("UPDATE ["+sheetName+"$B5:B5] SET F1=17", oledbConn);

  cmd.ExecuteNonQuery();

  oledbConn.Close();
}
catch(Exception ex)
{
  Debug.Write("Error: " + ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)

我这样打电话:

update("test.xls", "test");
Run Code Online (Sandbox Code Playgroud)

B5单元格在"测试"表中可用,但该值永远不会更新.

我甚至试过这个:

UPDATE ["+sheetName+"$B5:B5] SET F1='17'
Run Code Online (Sandbox Code Playgroud)

我总是遇到这个例外:没有给出一个或多个必需参数的值.

任何的想法?

提前致谢.

Fio*_*ala 5

编辑我注意到你错过了HDR = No.

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + 
";Extended Properties=""Excel 12.0;HDR=No"""
Run Code Online (Sandbox Code Playgroud)

编辑在C#Express中测试

或者:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\\docs\\myspreadsheet.xls;Extended Properties='Excel 12.0 xml;HDR=No'"
Run Code Online (Sandbox Code Playgroud)

注意xml

要么

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\\docs\\myspreadsheet.xls;Extended Properties='Excel 8.0;HDR=No'"
Run Code Online (Sandbox Code Playgroud)

对于*.xls