`
cuitengfei
  • 浏览: 7785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于ASP连接Excel数据库无法更新的问题

阅读更多
无法更新的问题。错误提示:

Microsoft JET Database Engine (0x80004005)
操作必须使用一个可更新的查询。
注意:Excel数据库中的表能正常读出,但不能更新。已排出不是IIS目录权限问题,因为同目录下的是Access数据库就没这个问题,能更新。是不是Excel中有什么设置?(微软网上有一篇相应文章,但我不能找到它指的设置对话框)
问题补充: 字符串连接没问题,Excel文件能读出,不能写入。
权限没问题,同一个文件夹中的Access数据库读写都正常。
连接字符串如下:
set Conn1=server.createobject("adodb.connection")
Conn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='EXCEL 8.0;HDR=YES;IMEX=1';Data Source="&server.MapPath("../dcdata/score.xls")

这是个基于WEB的程序,客户(远端)要一个Excel表来打印数据。

在微软的知识库中查到的。需在连接字符串中加入“ReadOnly=0”,因为Excel在与ASP连接时默认为只读,但其它数据库(Accsee、SQL等)默认则为可读写的。
 
以下都可以读写
'connstr="driver={microsoft excel driver (*.xls)};ReadOnly=0;dbq="&server.mappath("aa.xls")
'connstr="driver={Microsoft Excel Driver (*.xls)};ReadOnly=0;dbq=" & server.mappath("aa.xls")
'connstr= "driver={Microsoft Excel-Treiber (*.xls)};ReadOnly=0;dbq=" & server.mappath("aa.xls")
'connstr="driver={Driver do Microsoft Excel (*.xls)};ReadOnly=0;dbq=" & server.mappath("aa.xls")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("aa.xls") &" ;Extended Properties=Excel 8.0"
 
操作说明:
1。数据提供程序使用Jet,同时需要指定Extended Properties 关键字设置 Excel 特定的属性,不同版本的Excel对应不同的属性值:用于 Extended Properties 值的有效 Excel 版本。
对于 Microsoft Excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 工作簿,请使用 Excel 8.0。

对于 Microsoft Excel 5.0 和 7.0 (95) 工作簿,请使用 Excel 5.0。

对于 Microsoft Excel 4.0 工作簿,请使用 Excel 4.0。

对于 Microsoft Excel 3.0 工作簿,请使用 Excel 3.0。

ref:http://msdn.microsoft.com /library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp

2。数据源路径使用物理绝对路径(同Access)

3。如何引用表名?
对 Excel 工作簿中表(或范围)的有效引用。
若要引用完全使用的工作表的范围,请指定后面跟有美元符号的工作表名称。例如:

 

select * from [Sheet1$]
若要引用工作表上的特定地址范围,请指定后面跟有美元符号和该范围的工作表名称。例如:

select * from [Sheet1$A1:B10]
若要引用指定的范围,请使用该范围的名称。例如:

select * from [MyNamedRange]
ref:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS /dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp

说明:
可以引用Excel 工作簿中的三种对象:
• 整张工作表:[Sheet1$] ,Sheet1 就是工作表的名称
• 工作表上的命名单元格区域:[MyNamedRange] (不需要指定工作表,因为整个xls中命名区域只能唯一)
XLS命名方法:选中单元格范围》插入》名称》定义
• 工作表上的未命名单元格区域 :[Sheet1$A1:B10]
(在关系数据库提供的各种对象中(表、视图、存储过程等),Excel 数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”,而工作表被视为“系统表”)

注意:
•必须使用[](方括号),否将报:
FROM 子句语法错误
•必须跟$(美元符号),否则报:
Microsoft Jet 数据库引擎找不到对象'Sheet2'。请确定对象是否存在,并正确地写出它的名称和路径。
•如果工作表名称不对,或者不存在,将报:
'Sheet2$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。
•在 如何在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据   中提到可以使用
~ 和 '(波浪线和单引号)代替[],使用ADO。NET测试没有成功,报:
FROM 子句语法错误
•当引用工作表明名([Sheet1$])时,数据提供程序认为数据表从指定工作表上最左上方的非空单元格开始。比如,工作表从第 3 行,C 列开始,第3行,C列之前以及第1、2行全为空,则只会显示从第3行,C列开始的数据;以最后表最大范围内的非空单元结束;
•因此,如需要精确读取范围,应该使用命名区域 [NamedRange],或者指定地址:[Sheet1$A1:C10]

4。如何引用列名?
•根据默认连接字符串中,数据提供程序会将有效区域内的第一行作为列名,如果此行某单元格为空则用F1、F2表示,其中序数,跟单元格的位置一致,从1开始;
•如果希望第一行作为数据显示,而非列名,可以在连接串的 Extended Properties 属性指定:HDR=NO
默认值为:HDR=NO 格式如下:

        string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                        "Extended Properties=\"Excel 8.0;HDR=NO\";" +
                        "data source=" + xlsPath;
help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/Html/745c5f95-2f02-4674-b378-6d51a7ec2490.htm 中 《连接Excel》节(说明:在我自己的MSDN中,它的例子使用了两个双引号是错的,测试没有通过,原文这样说的:

注意,Extended Properties 所需的双引号必须还要加双引号。

在这种情况下,所有的列名都是以F开头,然后跟索引,从F1开始,F2,F3。。。。。。。

5。为什么有效单元格数据不显示出来?
出现这种情况的可能原因是,默认连接中,数据提供程序根据前面单元格推断后续单元个的数据类型。
可以通过 Extended Properties 中指定 IMEX=1

“IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取

 

小例子:
<%set conn = server.createobject("adodb.connection")
'connstr="driver={microsoft excel driver (*.xls)};ReadOnly=0;dbq="&server.mappath("aa.xls")
'connstr="driver={Microsoft Excel Driver (*.xls)};ReadOnly=0;dbq=" & server.mappath("aa.xls")
'connstr= "driver={Microsoft Excel-Treiber (*.xls)};ReadOnly=0;dbq=" & server.mappath("aa.xls")
'connstr="driver={Driver do Microsoft Excel (*.xls)};ReadOnly=0;dbq=" & server.mappath("aa.xls")

connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("aa.xls") &" ;Extended Properties=Excel 8.0"
conn.open connstr%>
<% set rs = server.CreateObject("adodb.recordset")
sql="select * from [Page1$]"
rs.open sql, conn ,1,1
if rs.eof then
response.Write "无数据"
else
do while not rs.eof %>
<%= rs(0) %> <%
rs.movenext
loop
end if
%>
<% set rs = server.CreateObject("adodb.recordset")
sql="select * from [Page1$]"
rs.open sql, conn ,1,3
rs.addnew
rs(0)="bb"
'// /*rs("b")="slkdfjl"*/
rs.update
rs.close
set rs= nothing
conn.close
set conn= nothing
%>

分享到:
评论

相关推荐

    asp连接读写Excel数据库的留言板

    asp连接读写Excel数据库的留言板 演示地址:http://demo.codechina.com/book01/ 有兴趣的下载研究吧 数据连接代码如下: &lt;%@codepage=936 language=javascript%&gt;&lt;% tmp=Server.MapPath("DataTemp.exl"); ...

    ASP.NET数据库连接字符串总结

    ASP.NET连接各种数据库的连接字符串总结,包括Access ,Excel,SQL Server,ODBC,Oracle

    C# asp.net导入和导出excel完整源码

    asp.net数据库中导出excel表,excel表数据导入到数据库中,这两个应用的完整实例代码,把相应的数据库连接该一下就可以用,基于C#。

    按时间检索数据库并输出EXCEL

    从ACEESS数据库中,按所需时间检索导出所需的数据,格式为excel。

    C#的常用数据库连接

    1 连接SQL Server数据库示例, 2 // 连接到 ACCESS 的连接...8 将数据库数据填充到 XML 文件,9 ASP.NET 使用存储过程 10 使用带输入参数的存储过程 13 保存图片到SQL Server数据库示例 15 如何读取Excel表格中的数据

    asp将Excel2Access

    asp连接Excel;用asp将Excel中数据添加到Access数据库中;本压缩文件是个一完整的Excel到Access小系统,包含一个Excel文件、Access文件、几个asp文件.

    ASP.NET 数据库入门经典C#篇pdg

    本书要求读者对 ASP.NET 和 C# 有一些基本的认识,如果对操纵数据库没有任何经验也没有关系,作者将指导每个过程,包括将 ASP.NET 页面与数据库连接,研究各种读取、处理和更新数据的方法。接下来研究所有涉及侧重于...

    asp.net导入和导出excel完整实例代码

    asp.net数据库中导出excel表,excel表数据导入到数据库中,这两个应用的完整实例代码,把相应的数据库连接该一下就可以用,基于C#。

    JAVA实现的EXCEL表格导入数据录入

    数据库连接 操作数据库 导入EXCEL表格 界面设计 还有进度条

    C# excel导入导出 宏求和统计

    excel导入导出的问题并进行求和统计的问题困扰了好几天了,现在吐血分享给大家!!!!! 主要功能: 1.导出: 在页面加载的时候,将数据库数据绑定到页面gridview上, 按钮“导出excel”实现从页面导出excel文件, ...

    asp查询 导出excel

    asp连接sql2008 查询全部 导出excel 项目直接放到iis上就行 包里有数据库代码

    Asp.Net(C#)使用oleDbConnection 连接Excel的方法

    ADO.NET采用不同的Connection对象连接数据库。这篇文章主要介绍了Asp.Net(C#)使用oleDbConnection 连接Excel的方法,非常具有实用价值,需要的朋友可以参考下

    ASP.NET 代码生成工具 e-World Tech ASP.NET Maker 2020.0.4.1.zip

    ASP.NET Maker 注册版是一套非常容易使用的代码生成工具,同 ASPMaker,它能快速地根据数据库连接资料来源中生成一套完整的 ASP.NET 程序。 ASP.NET Maker 2016 英文特别版ASP.NET Maker 2020 英文特别版 支持以下...

    asp查询结果导出excel

    asp连接sql2008全部查询 再导出excel 包里有数据库代码,项目直接放到iis上可用

    VSNET代码生成编程工具1.0绿色版(支持多种的数据库连接方式)

    代码生成工具 支持代码生成sql数据库备注,件主要特点:本软件支持多种数据库连接方式。支持SQL数据库备注生成在代码上!可自动生成新增、修改、读取相关表的Visual Studio代码.生成的代码支持Win和ASP编程。支持表格...

    ASP.NET学习大全

    关于asp.net导出Excel.txt 汉字转拼音缩写.txt 将DataGrid数据写入Excel文件.txt 揭开ASP.NET中Cookie编程的奥秘.txt 利用TreeView控件动态生成无限级树.txt 实现一个Asp.net自定义Back控件.txt 使用XML创建Excel...

    asp控制xml数据库的经典代码

    本文为大家分享了六段经典的asp控制xml数据库代码,感兴趣的小伙伴们可以参考一下

    asp.net学习大全(超全面的资料整合)

    关于asp.net导出Excel.txt 汉字转拼音缩写.txt 将DataGrid数据写入Excel文件.txt 揭开ASP.NET中Cookie编程的奥秘.txt 利用TreeView控件动态生成无限级树.txt 实现一个Asp.net自定义Back控件.txt 使用XML创建Excel...

    ASP.NET学习笔记

    一、 控件连接数据库 二. 从excel导入数据到数据库 比较 一、Web Application Projects和Web Site Projects两种编程模型比较 疑难问题解决 一.密码最短长度为7,其中必须包含以下非字母数字字符:1. 二.ASP...

    课程设计-基于asp.net的在线考试报名系统(源码+数据库+报告).zip

    后台管理:admin/login.asp ... 系统基本功能: 前台: 1.报名/报名信息修改 2.查询成绩 ...系统使用说明:将源码部署到iis服务器上,导入access数据库脚本,修改数据库连接语句,调试运行。本源码是发布版本。

Global site tag (gtag.js) - Google Analytics