【问题标题】:OleDbException. No value given for one or more required parametersOleDb 异常。没有为一个或多个必需参数指定值
【发布时间】:2012-09-05 15:19:41
【问题描述】:
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();

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

OleDbException。一个或多个必需参数没有给出值。解决方案是什么?

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    如果您使用 HDR=NO,则列名称为 F1、F2 F3 等......

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

    但我认为您应该指定一个 WHERE 子句来分隔受影响的行。
    请记住,使用 OleDb 您不应该考虑行/列,而是考虑记录。

    作为替代方案,如果您确切知道要更新的行/列,则可以使用

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

    【讨论】:

    • 我们如何直接访问我们想要的单元格,例如 A13 或 H43
    • 添加了替代语法(使用 Excel 2003 - Jet.OleDb 测试),但我认为它也适用于较新的 ACE 提供程序
    【解决方案2】:

    也许你需要一个 where 子句

    Update [tablenameeee$] set [F1] = 15 where [F2] = 3
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2022-01-08
      • 1970-01-01
      • 2017-12-25
      • 2015-09-09
      相关资源
      最近更新 更多