尝试对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架构获得的。有可能做我想做的事吗?我哪里出错?
答案 0 :(得分:1)
您通常需要在工作表名称后面加上$符号。尝试:
cmd.CommandText = "UPDATE [" + sheetName + "$] SET [Quantity Error] = 'test' WHERE [Full Name] = 'Mr. Brown White'"
没有$符号的名称被解释为命名范围而不是工作表名称
答案 1 :(得分:0)
我认为这通常是权限问题。如果在Excel中打开文件,是否可以读/写文件?
答案 2 :(得分:0)
使用此连接字符串,这将起作用
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + reportFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;\";
除了检查Excel文件的权限外,还要验证连接字符串的扩展属性是否包含IMEX=1
表达式。如果是,请将其删除。