0

尝试对 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 模式获得的。有可能做我想做的事吗?我哪里出错了?

4

3 回答 3

1

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

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

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

于 2009-05-07T23:42:39.067 回答
0

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

于 2009-05-07T21:42:02.820 回答
0

使用此连接字符串这将起作用

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

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

于 2011-04-14T10:45:27.657 回答