【问题标题】:Update Excel 2007 with OleDb使用 OleDb 更新 Excel 2007
【发布时间】:2012-06-11 12:54:49
【问题描述】:

尝试对 Excel 2007 文件执行更新命令会出现以下错误: 操作必须使用可更新的查询。 我正在使用 System.Data.OleDb 和这样的连接字符串:

Dim strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=""" & pathToFile & """;" & _
    "Extended Properties=""Excel 12.0;HDR=YES"""

我尝试设置 ReadOnly=false,但这会导致 找不到可安装的 ISAM。 我还尝试设置 Mode=ReadWrite 和 IMEX=1,但似乎没有任何效果。我的更新命令是这样的:

 Dim cmd As OleDbCommand = con.CreateCommand()
    cmd.CommandText = "UPDATE [" + sheetName + "] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"

其中 sheetName 是通过查询 excel 架构获得的。有可能做我想做的事吗?我哪里出错了?

【问题讨论】:

    标签: vb.net excel oledb


    【解决方案1】:

    您通常需要在工作表名称后加一个 $ 符号。试试:

    cmd.CommandText = "UPDATE [" + sheetName + "$] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"
    

    没有 $ 符号的名称被解释为命名范围,而不是工作表名称

    【讨论】:

      【解决方案2】:

      我相信这通常是权限问题。如果您在 Excel 中打开文件,您可以读取/写入文件吗?

      【讨论】:

        【解决方案3】:

        使用这个连接字符串就可以了

        Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + reportFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;\";

        除了检查您的 Excel 文件的权限之外,还要验证连接字符串的扩展属性是否包含 IMEX=1 表达式。如果是,请将其删除。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多