使用OleDb更新Excel 2007

时间:2009-05-07 20:52:15

标签: vb.net excel oledb

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

3 个答案:

答案 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表达式。如果是,请将其删除。