asp从Excel中筛选符合条件的记录保存至新的Excel中

作者:dnawo 来源:蓝色理想 时间:2007-09-06 19:20:00 

以前在一个图书类网站看到这样一个功能:客户可以按条件搜索书目的信息,服务器会将符合条件的信息筛选出来保存为一个Excel文件供客户下载。今天有个客户也有这样的要求,于是并好好来学一下ASP对Excel的操作。
 
在网上搜索相关资料后知道ASP操作Excel和操作ACCESS差不多,只是连接方式不一样而已。为了验证下其真实性,建立了个xls文件并输入一些数据,用SQL语句进行查询,并将输出结果,没出现什么错误,再试了试加入一些查询条件,都OK!不过要注意的是在查询中Excel表的书写格式为[表名$];Excel中第一行被认为是字段名称;一些资料中还注明字段名不能包含数字,否则Excel的驱动在遇到这种问题时就会出错,不过我试了试,未发现什么错误,可能是环境的原因,大家实际操作时字段名都用纯字母以保万无一失。
 
搜索出记录集后就要保存了,这边出了问题。为了方便测试,新建了一条SQL语句:sqlstr = "insert into [sheet1$] values('111','222','333','444','555')",然而保存时老出现"操作必须使用一个可更新的查询"的错误,在用access数据库碰到此问题时一般是权限没设置好,可是这次该xls文件所在分区文件系统为fat32,应该不会是权限问题,xls文件只读属性也未钩选,在相同目录下新建一access文件进行添加记录结果也正常,不知是什么原因了?继续在Google、Baidu搜索相关资料,结果大都为asp如何连接excel,如何读取,竟没有人在添加时碰到问题,郁闷!
 
皇天不负有心人,用Insert into添加记录的问题没解决,我却看到了另一篇文章"ASP操作Excel技术总结",其中有一节说服务器中要设置COM组件的操作权限,我本以为是这边权限没设置好,不过按要求设置完重启服务器,不行,重启了两次机子后仍不行只好作罢。文章中还介绍了用Excel对象操作Excel文件的方法,利用Excel对象可新建Excel文件、打开Excel文件、添加记录、保存文件等功能,既然该对象能实现这么多功能,那结合ASP中SQL查询不就可以实现将查询返回的记录集保存到一个新的Excel中了吗?经过一番努力,终于实现了,代码如下:
 

 程序代码

Dim conn,rs,sqlstr 
Set conn=Server.CreateObject("ADODB.Connection")  
Conn.connectionstring="Driver={Microsoft excel Driver (*.xls)};DBQ="& Server.MapPath("book2.xls") 
conn.Open 
Set rs = Server.CreateObject("ADODB.Recordset")  
Sqlstr="select * from [Sheet1$]" 
rs.Open Sqlstr,conn,1,2 
’建立Excel对象 
strAddr=Server.MapPath(".") 
set objExcelApp=CreateObject("Excel.Application") 
objExcelApp.DisplayAlerts=false 
objExcelApp.Application.Visible=false 
’新建Excel文件 
objExcelApp.WorkBooks.add 
set objExcelBook=objExcelApp.ActiveWorkBook 
set objExcelSheets=objExcelBook.Worksheets 
set objExcelSheet=objExcelBook.Sheets(1) 
’将上边新建Excel段改为下边读取已有Excel文件也可以 
’读取已有Excel文件 
’objExcelApp.WorkBooks.Open(strAddr&"\Null.xls") ’必须有这个xls文件存在,可无内容 
’set objExcelBook=objExcelApp.ActiveWorkBook 
’set objExcelSheets=objExcelBook.Worksheets 
’set objExcelSheet=objExcelBook.Sheets(1) 
Dim i,j 
j = 1 
do while not rs.eof 
    for i=0 to rs.Fields.Count-1 
        objExcelSheet.Cells(j,i+1).value=rs(i) 
    next 
    j = j + 1 
    rs.movenext 
loop 
’另存Excel文件 
objExcelBook.SaveAs(strAddr&"\mzwu.xls") ’若存在mzwu.xls则覆盖 
objExcelApp.Quit 
set objExcelApp=Nothing 
rs.close 
set rs=nothing 
Conn.close 
set Conn=nothing 


标签:Excel,ASP,操作,记录
0
投稿

猜你喜欢

  • 排序与检索

    2008-05-18 13:09:00
  • 与 Function 和 Object 相关的有趣代码

    2010-05-07 12:29:00
  • 使用MySQL内建复制功能

    2009-12-15 21:36:00
  • W3C Group的JavaScript1.8新特性介绍

    2009-07-24 12:31:00
  • asp access数据库并生成XML文件范例

    2011-03-29 10:49:00
  • asp如何用JMail POP3接收电子邮件?

    2010-06-13 13:09:00
  • 设计师的幸福

    2009-05-21 11:59:00
  • ASP正则表达式验证域名是否合法

    2010-01-02 20:44:00
  • 关于INDEX SERVER+ASP建立查询引擎的一点心得

    2008-03-02 15:56:00
  • 一些关于asp 购物车的想法

    2011-04-10 11:10:00
  • Hibernate Oracle sequence的使用技巧

    2009-06-19 17:25:00
  • ASP无组件上载,带进度条,多文件上载

    2008-10-29 10:03:00
  • SQL Server索引管理的六大铁律

    2009-03-25 14:05:00
  • JS+ASP实现无刷新新闻列表之分页

    2007-08-22 12:57:00
  • JavaScript中实现字符串的取左取右(实现left和right功能)

    2009-07-20 12:39:00
  • css布局查看器

    2008-10-29 11:22:00
  • oracle 数据库连接分析

    2009-07-28 10:42:00
  • 设计上的小细节

    2010-06-24 21:44:00
  • asp如何用FSO对象显示一个文本文件?

    2010-06-09 18:41:00
  • 4款Javascript放大镜特效脚本

    2009-10-14 20:46:00
  • asp之家 网络编程 m.aspxhome.com