Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OLEDBEException。没有为一个或多个必需参数提供值_C#_Excel - Fatal编程技术网

C# OLEDBEException。没有为一个或多个必需参数提供值

C# OLEDBEException。没有为一个或多个必需参数提供值,c#,excel,C#,Excel,我想访问excel中的特定单元格,并更改其值。但我有个例外 OLEDBEException。没有为一个或多个必需参数提供值。解决方案是什么?如果使用HDR=No,则列名为F1、F2、F3等 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\a.xlsx" + ";Extended Properties='Excel 12.0 Xml;HDR=No'

我想访问excel中的特定单元格,并更改其值。但我有个例外


OLEDBEException。没有为一个或多个必需参数提供值。解决方案是什么?

如果使用HDR=No,则列名为F1、F2、F3等

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\a.xlsx" + ";Extended Properties='Excel 12.0 Xml;HDR=No'";
        OleDbConnection conn = new OleDbConnection(connString);
        OleDbCommand cmd = new OleDbCommand("Update [tablenameeee$] SET A1='15'", conn);
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
但是我认为您应该指定WHERE子句来分隔受影响的行。
请记住,使用OleDb时,您不应该考虑行/列,而应该考虑记录

另外,如果您确切知道要更新的行/列,则可以使用

OleDbCommand cmd = new OleDbCommand("Update [tablenameeee$] SET F1='15'", conn); 

也许你需要一个where子句

OleDbCommand cmd = new OleDbCommand("Update [tablenameeee$A1:A1] SET F1='15'", conn); 

或者,如果你想访问一个特定的单元,并且你知道它是哪个单元,那么史蒂夫的解决方案将像手套一样适合你

我们如何直接访问我们想要的单元格,比如A13或H43添加了替代语法(用Excel2003-Jet.OleDb测试),但我认为它也适用于较新的ACE提供程序
Update [tablenameeee$] set [F1] = 15 where [F2] = 3