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


猜你喜欢
- 某日,路上收到用户咨询,为了清除空间,想删除某200多G大表数据,且已经确认此表不再有业务访问,于是执行了一条命令‘de
- Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便,如果
- 有时在浏览网页时,常常因为网页中的图片文件过大而使下载时间较长,这样还没有下载完,就会有许多浏览者不耐烦地拂袖而去,从而损失了客户流。但要使
- 我还我还是有必要改一个标题,(原题为 让你想不通的"bug"),以免有同学误会。先看代码。看完之后我有个问题提问一下,看
- 如何在本地机器上创建缓存?用法到是很简单,只需先创建Stream对象的实例,然后开始写入数据即可: Dim str&n
- 本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数。分二类介绍,分别是: 著名函数篇-经常用到的函数 非
- Python3中sort方法是列表类型list的内置方法,使用sort方法对list排序会修改list本身,不会返回新的list。sort方
- Array.prototype._ = function(){var _p = 0;var _v = 0;(function(){ 
- 我们的浏览器访问网站时,默认为发送了一个HTTP的GET请求。在浏览网站时,会经常填写表单,比如填写用户名密码。点击登录后,会跳转到我们的主
- 1 自动微分我们在《数值分析》课程中已经学过许多经典的数值微分方法。许多经典的数值微分算法非常快,因为它们只需要计算差商。然而,他们的主要缺
- 正在学习javascript 的朋友可以把它当作小练习动手做一做。加强自己的动手编码能力。参考代码:<!DOCTYPE HTML PU
- django台后默认上传文件名在不使用分布式文件存储系统等第三方文件存储时,django使用默认的后台ImageField和FileFiel
- 全局变量是魔鬼。在YUI中,我们仅用两个全局变量:YAHOO和YAHOO_config。YUI的一切都是使用YAHOO对象级的成员或这个成员
- mysql使用left join连接出现重复问题描述在使用连接查询的时候,例如以A表为主表,左连接B表,我们期望的是A表有多少条记录,查询结
- 本文实例为大家分享了javascript实现简单计算器的具体代码,供大家参考,具体内容如下设计一个简单的计算器代码 <body>
- 前言之前实践了下face++在线人脸识别版本,这回做一下离线版本。github 上面有关于face_recognition的相关资料,本人只
- 把下面SQL里的SELECT单独执行,没有问题,但是用来CREATE VIEW 就报错了.CREATE OR REPLA
- 数据库的表Info,表部分结构:Info_Id  
- 如下所示:d = { 'a': '0.0000', 'b':
- Dapper的简介Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,