如何使用asp读取execle表中的数据?????

langzikuangsheng 2002-12-25 11:06:12
急呀!!!!!!!!!!!
...全文
91 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
langzikuangsheng 2002-12-26
  • 打赏
  • 举报
回复
看看吧??????????????????/////
langzikuangsheng 2002-12-26
  • 打赏
  • 举报
回复
大家再帮帮忙好?
langzikuangsheng 2002-12-26
  • 打赏
  • 举报
回复
up 无法访问
lbd8848 2002-12-26
  • 打赏
  • 举报
回复
http://rednet.etechnic.com.cn/document/20001011/20001011122136011.shtml
langzikuangsheng 2002-12-26
  • 打赏
  • 举报
回复
Set conn1 = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & Server.MapPath("6.xls")
Driver = "DRIVER={Microsoft Excel Driver (*.xls)};" &DBPath
conn1.Open Driver
sheet="[1]"
set rs1 = conn1.execute (sheet)
到底错在那里了?

总是提示
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC Excel Driver] 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。

/shiyan/excle.asp,行10

langzikuangsheng 2002-12-26
  • 打赏
  • 举报
回复
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x550 Thread 0x7d0 DBC 0x21e6ffc Excel'。

/shiyan/excle.asp,行7
这是啥意思?
lbd8848 2002-12-26
  • 打赏
  • 举报
回复
微软好像有下载,具体不清楚
langzikuangsheng 2002-12-26
  • 打赏
  • 举报
回复
我怀疑我的ODBC有问题了?有什么办法?比如重新安装?怎么安装?
lbd8848 2002-12-26
  • 打赏
  • 举报
回复
(三)创建电子数据表列表和名字范围


   除了“读取Excel数据形成HTML表格”的技术外,你可能有兴趣想了解怎样用程序实现电子数据表和名字范围的下拉菜单列表。


除了单元格的内容,用ADO还能知道更多的信息---在上面,已经讨论了用它得到字段名的列表。


   调用OpenSchema方法,可以得到当前打开数据库(同样适用于电子数据簿)的特殊记录集,在这里讨论的例程中,是取回了当前电子数据簿的电子数据表和名字范围。在数据库的操作中,通过传递给ADO一个adSchemaTablesas命令参数,就可以得到所有表的信息。


   Set oSchemaRs = oConn.OpenSchema(adSchemaTables)


   上述调用将返回一个记录集信息,对于文件TheWorkbook.xls,结果是:


   TABLE_NAME TABLE_TYPE

Employees$ SYSTEM TABLE

ListOfProducts$ SYSTEM TABLE

Suppliers$ SYSTEM TABLE

A_Duplicate_Name TABLE

Alphabetical_List_of_Products TABLE

Employees TABLE

ListOfProducts$A_Duplicate_Name TABLE

Product_Totals TABLE



   和记录集相比较,电子数据工作簿中的电子数据表(worksheets)被当作系统表,名字范围被当作通常表。通常情况下,无名范围(可以使用!)不被记录集报告。


   掌握了这些信息,创建字段下拉菜单就成了分离两个表类型和使用合适的标记的工作了。比如,可以执行下面的HTML/ASP代码段来创建工作表列表的下拉菜单:


< select name="XlSheet" >

< %

vOptions = "< option >< /option >"

Do While Not oSchemaRs.EOF

If oSchemaRs("TABLE_TYPE") = "SYSTEM TABLE" Then

vOptions = vOptions & "< option >" & _

Server.HtmlEncode(oSchemaRs("TABLE_NAME")) & _

"< /option >

End If

oSchemaRs.MoveNext

Loop

Response.Write vOptions

% >

< /select >

   实际的ReadX1.asp代码中可能还复杂一些,因为要处理上一个选项的显示,同时要使用客户端的JavaScript脚本检查输入的合法性。
lbd8848 2002-12-26
  • 打赏
  • 举报
回复
(二)生成HTML表格

过程的最后一步是格式化数据并显示,就是建立一个HTML输出,步骤如下:


依次循环记录集(Recordset)中每一个字段(Field),写标题

依次循环记录集和每一个字段,写数值

   例程代码将整个的HTML表格组合为一个长字符串,最后输出到HTML页面。字符串初始化为如下值:


DataTable = "< table >< tr >"


   电子数据表的列的必要信息由记录集对象的Field集合产生,它包括了一系列字段对象,可以使用它们的Name属性建立标题行。


For Each oField in oRs.Fields

DataTable = DataTable & "< th >" & oField.Name & "< /th >"

Next

DataTable = DataTable & "< /tr >"


   最新打开的记录集(recordset)自动将初始位置指向第一行,使用MoveNext方法移动记录指针,顺序存取每一行,直到整个记录集的末尾。当到记录集末尾时,属性Eof的值变成True,循环结束。在循环中,通过字段集合的列举以及对应的Value属性,从而达到单元格数据的存取。


Do While Not oRs.EOF

DataTable = DataTable & "< tr >"


For Each oField in oRs.Fields

DataTable = DataTable & "< td >" & oField.Value & "< /td >"

Next


DataTable = DataTable & "< /tr >"

oRs.MoveNext

Loop


   最后,加上HTML的表格结束标记,输出整个字符串到页面,形成了动态产生的表格。由于记录集对象不再需要,所以要释放它。


DataTable = DataTable & "< /table >"

Set oRs = Nothing


Response.Write DataTable


   在总结前,有必要说明一个小的定义在电子数据表是如何解释的。


   通常,在ADO中将一定范围内的第一行解释为一套列标题,尽管在ODBC中有明文定义的选项可以禁止这种解释,但我也不愿意在ADO中这么做。如果第一行包含数字信息,那么ADO中将返回通用的字段名,比如:F1,F2,等等...,这样就不能看到数字的值。而且,ADO也会将第一行中的“非字母、非数字”字符替换为符号#。
lbd8848 2002-12-26
  • 打赏
  • 举报
回复

(一)显示数据表格的应用

  在用ASP语言开发的Web数据库应用程序中,ADO (ActiveX Data Objects) 已经成为非常流行的工具,而且对于真正的关系型数据库,比如Oracle、SQL Server,它都不会有局限性。ADO能够存取多种不同的数据格式,MS Excel电子数据表格就是其中之一。


   关于这个应用


   可供下载的例程代码中包括一个ASP文件ReadX1.asp,一个Excel文件TheWorkbook.xls。你也可以另外加入一些电子数据表文件。


   执行ReadXl.asp页面,将显示出可用的电子数据表文件列表。选择好一个文件,并提交表单后,你将会看到:


一个下拉菜单,其中是工作表名称

一个下拉菜单,其中是命名的范围

一个单元格范围输入框

第一个工作表的全部内容

  


   可以选择工作簿文件中的另外一个工作表,或者输入符合Excel格式的单元格范围数值,比如:D20:E21 或者 Sheet3!F12:J22。注意:在ADO和ODBC驱动程序中,要用$符合替换分界符号!。


   实现步骤


   现在对这个应用程序已经有了初步的认识,下面开始讨论ASP代码,看看如何读取电子数据表的数据,如何找到电子数据簿

(workbook)文件中可用的电子数据表(worksheet)和范围,并看看实现文件列表选择的技术。这里假设你已经熟悉了编写HTML表单的技术,所以对此不做详细介绍。


   基本条件


   下面将涉及到ADO对象、方法、属性、收集和常量。在服务器上安装IIS后,ADO就存在了,并且还有相关文档,地址是http://YourServer/IisHelp/ado210.chm (版本2.1),或者http://YourServer/IisHelp/ado/docs/(老版本1.5)。如果需要升级ADO,可以从http://www.microsoft.com/Data/download.htm下载最新版本的MDAC工具包进行安装。


   实现“文件列表选择”使用到了内建的VBScript脚本对象,相关文档可以查看http://YourServer/IisHelp/vbscript/htm/vbstoc.htm,如果想查看最新的文档,请访问http://msdn.microsoft.com/scripting

(版本5)。当然,在服务器端和客户端,你都不需要安装MS Excel。

   读取电子数据表(Worksheet)数据

   通过ADO读取电子数据表与读取数据库表的方法基本是一样的。从下图可以看到,电子数据表的行被称作记录Records,列被称作字段Fields。电子数据表或者单元格的范围可以被看成表Tables,并按照记录集recordsets进行存取。
Spreadsheet Database HTML
< table >
< tr >
< th >NameA< /th >
< th >NameB< /th >
< th >NameC< /th >
< /tr >< tr >
< td >1< /td >
< td >2< /td >
< td >3< /td >
< /tr >< tr >
< td >11< /td >
< td >12< /td >
< td >13< /td >
< /tr >

< /table >


   执行下面的步骤,从数据库表中读取数据并显示:

连接数据库(同样:打开数据簿文件)

读取记录集recordset(同样:读取一定范围的单元格)

循环每一个记录(同样:每一行),经过格式化,显示

   建立ADO连接


   在连接数据库或者打开文件前,需要了解一些信息。其中只要是设置名叫DSN的ODBC驱动,但为每一个数据表都建立这样的ODBC驱动,是非常麻烦的,因为这需要在服务器的控制台上通过“控制面板/ODBC设置”手工完成。


   幸好,ASP提供了替代DSN的其他方法,它可以非常容易地在运行时建立连接。比如,字符串“DRIVER={Microsoft Excel Driver?*.xls)};ReadOnly=1;DBQ=C:dirfile.xls",表示了替代DSN打开文件c:dirfile.xls,因此通过这种方法仅仅需要提供给ASP程序一个文件名即可。执行下面的代码,将从表单中读取文件名,然后转换为全路径,接着生成连接字符串,最后建立并打开这个连接。


vXlFile = Request("XlBook")

vXlFilePath = Server.MapPath(vXlFile) ’ assumes file in current directory

vConnString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _

vXlFilePath

Set oConn = Server.CreateObject("ADODB.Connection")

oConn.Open vConnString

   如果想查看更多的非DSN连接信息,请打开Windows或者NT System目录下的帮助文件Odbcjet.hlp。

   读取记录集

   连接上电子数据簿文件后,读取一定范围的单元格数据就很简单了。尽管不是必须的,但还是建议:用符合“[” 和 “]”包含住单元格的范围定义。只所以这么做,是以防在数据库的操作中产生非法的符合。

vXlRange = Request("XlRange")
Set oRs = oConn.Execute("[" & vXlRange & "]")
   执行上面的语句,将返回记录集对象,其中包括范围内单元格的所有可用信息, 记录集的数值和描述数据的元数据。
langzikuangsheng 2002-12-25
  • 打赏
  • 举报
回复
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC Excel Driver] 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。

/shiyan/excle.asp,行9

lbd8848(lbd):按您的说法提示以上错误。
lbd8848 2002-12-25
  • 打赏
  • 举报
回复
sheet="日用品" 'sheet应该放的是excel中的行数改为A000:Z010试
rs.open "[" & sheet & "$]",conn1 '这里不需要加select * from
langzikuangsheng 2002-12-25
  • 打赏
  • 举报
回复
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls)};ReadOnly=1;"
DBPath = "DBQ=" & Server.MapPath("6.xls")
conn1.Open Driver & DBPath
sheet="日用品"
rs.open "Select * From [" & sheet & "$]",conn1 ‘第九行
%>
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e37'
[Microsoft][ODBC Excel Driver] Microsoft Jet 数据库引擎找不到对象'日用品$'。请确定对象是否存在,并正确地写出它的名称和路径。

/shiyan/excle.asp,行9

咋回事?
human_2 2002-12-25
  • 打赏
  • 举报
回复
fa1 :使用自己做的控件或则DLL
FA2: 在ASP 调用 跟VB一样,,不过好象要设置安全或则什么属性
lbd8848 2002-12-25
  • 打赏
  • 举报
回复
例:
vXlFilePath = Server.MapPath("book2.xls")
vConnString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & vXlFilePath
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open vConnString
vXlRange = "A000:EZ1100"

Set oRs = oConn.Execute("[" & vXlRange & "]")
Do While Not oRs.EOF and (recordc<pagesize)
response.write "<td><table border=0 cellpadding=3 cellspacing=0 width=350 height=114>"
response.write "<tr HEIGHT=35><td>" & ors.fields(0).value & "</td></tr>"
response.write "<tr HEIGHT=35><td>" & ors.fields(1).value & "</td></tr>"
.....
oRs.MoveNext
loop
%>
langzikuangsheng 2002-12-25
  • 打赏
  • 举报
回复
up

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧