使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法

使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法

转自:http://www.cnblogs.com/Richinger/archive/2008/09/28/1301170.html

前两天使用oledb连接excel的办法为单位某部门从一个excel的多个sheet中作连选抽出需要的数据,程序非常简单,结果很快就出来,原来手工需要很长时间才能选出的结果现在几乎一点击就有了结果。使用人员非常满意,由于是多人使用,开始只是将结果显示在一个页面上。后来他们要求将结果写入该xls文件的另一个sheet中,我随便写了个语句以为可以立马搞掂,没想到居然出现了“操作必须使用一个可更新的查询”。因为读取结果正常,我开始以为是excel文件所处的文件夹没有写权限所致。增加了相应权限后,结果依然如故。没办法还是检查程序吧,仔细检查了一下,问题发现了,原来开始只是为了读取excel我将连接写成了如下格式:

Private filename As String = Server.MapPath(".") + "\test.xls;Extended Properties=‘Excel 8.0;HDR=yes;IMEX=1‘"
    Dim constr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename

特别注意

Extended Properties=‘Excel 8.0;HDR=yes;IMEX=1‘

A: HDR ( HeaDer Row )设置
    若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称

若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称

B:IMEX ( IMport EXport mode )设置

     IMEX 有三种模式,各自引起的读写行为也不同,容後再述:
     0 is Export mode
     1 is Import mode
     2 is Linked mode (full update capabilities)

我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:

当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。

当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。

当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。

看完这些大家就不用再说我的写入为什么有问题了吧。我将连接改为如下:

Private filename As String = Server.MapPath(".") + "\test.xls;Extended Properties=‘Excel 8.0;HDR=yes;IMEX=2‘"
    Dim constr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename

运行一切ok。

时间: 2024-10-03 13:20:25

使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法的相关文章

C#使用oledb连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决办法

我发生错误时的环境:Windows 7,Framework 4.0,Microsoft Office 2007,VS2010,c# WinForm: 部分代码: string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";Extended Properties='Excel 12.0;

Access提示“操作必须使用一个可更新的查询”的解决办法

问题:软件工程师开发了一个asp.net+access网站,本地调试增.删.改和查都没有异常.部署到服务器windows2008 R2的IIS上运行后,查询没有异常.可是在修改操作提交时,产生异常:提示“操作必须使用一个可更新的查询”. 原因:这个错误发生在当你的程序试图执行更新数据库或其它类似操作时,没有写入数据库的操作权限. 解决方法:将access数据库设置可写权限.

Access操作必须使用一个可更新的查询

Microsoft JET Database Engine (0x80004005) 操作必须使用一个可更新的查询. 解决办法有以下几种(针对不同的服务器可能解决办法不一样,在这里假设网站主目录为wwwroot): A.在wwwroot文件夹上面点击右键-"属性"-取消"只读" 此方法最简单.偶尔有效 B.在您的数据库文件上文件夹上面点击右键-"属性"-"安全"-添加用户:"IUSR_计算机名" 并开放&q

问题.NETSystem.Data.OleDb.OleDbException 操作必须使用一个可更新的查询

问题:System.Data.OleDb.OleDbException 操作必须使用一个可更新的查询 问题现象:用asp.net连access数据库,查询可以,插入数据报错.在.NET中F5可以使用方法插入数据,但是复制到发布目录下,报错. System.Data.OleDb.OleDbException 操作必须使用一个可更新的查询 问题原因:最简单的原因就是你数据库放置的位置权限不够.一般都是查询可以执行,而要进行写操作就不行了!那是因为保存数据库的磁盘系统是ntfs格式的,文件夹的共享要设

运行时错误‘-2147467259(80004005)操作必须使用一个可更新的查询

运行时错误‘-2147467259(80004005)操作必须使用一个可更新的查询 昨天晚上一个网友发给我一个酒店客房管理系统,让我帮他看看是什么问题 源码拿来一看是网上下载的,数据库是access. 每次在更新入住数据时 即提示 运行时错误‘-2147467259(80004005)操作必须使用一个可更新的查询 . 一开始我去百度了下,说的最多的就是文件共享和权限问题 最终解决是把文件属性的只读属性勾选去掉. 依此为记,引以为戒 2016-07-31

网站后台登录aspcms 提示错误号:-2147467259,错误描述:操作必须使用一个可更新的查询。sql=update AspCms_Content set TimeStatus=0 where TimeStatus=1 and Timeing <= 解决方法。

把data文件夹的权限改下,改成user组可以修改.写入,就好了. 还有一个问题,就是进入后台的时候提示没有访问权限的问题,解决方法看下图

【210】通过OleDb读写Excel数据到DataTable

参考:C#通过OLEDB读写Excel2013显示到datagrid控件,修改数据集并更新excel2013 目录: 1. System.Data.OleDb 命名空间 OleDbConnection 类 OleDbDataAdapter 类 DateSet 类 DataTable 类 2. 代码实现 System.Data.OleDb 命名空间 OleDbConnection 类:表示与数据源的开放连接. OleDbConnection(String):使用指定的连接字符串初始化 OleDbC

在网页中打开word和excel文件时提示文件已损坏,无法打开的解决办法

系统环境:安装win10的PC机,办公软件安装有office2013.问题描述:在使用华天动力OA过程中,部分审批表单的附件中有word或excel文件,如果点击word或excel文件,点击"打开",会弹出提示"文件已损坏,无法打开"的提示,选择保存后,再到保存的位置打开则能正常打开文件.问题分析:既然保存后可以正常打开文件,可以判定网页中上传的office附件是没有问题的,问题有可能是网页安全设置或office的安全设置问题.在将浏览器重置后,问题依旧,基本上可

windows 2008R2 无法安装操作系统补丁,或无法安装Sp1升级包的解决办法

windows 2008R2 无法安装操作系统补丁,或无法安装Sp1升级包的解决办法 给 C:\ 加上users读取和执行,,列出文件夹内容,及读取的权限,不需要就用到子目录 将 C:\Windows\System32\catroot2 目录权限应用到所有子目录及文件上.(里面有一个关键的权限是CrytSvc用户要用全部的权限.)