不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
从Excel中筛选符合条件的记录保存至新的Excel中
编辑:dnawo 日期:2007-01-16
以前在一个图书类网站看到这样一个功能:客户可以按条件搜索书目的信息,服务器会将符合条件的信息筛选出来保存为一个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技术总结",本博客中有收录:http://www.mzwu.com/article.asp?id=232。其中有一节说服务器中要设置COM组件的操作权限,我本以为是这边权限没设置好,不过按要求设置完重启服务器,不行,重启了两次机子后仍不行只好作罢。文章中还介绍了用Excel对象操作Excel文件的方法,利用Excel对象可新建Excel文件、打开Excel文件、添加记录、保存文件等功能,既然该对象能实现这么多功能,那结合ASP中SQL查询不就可以实现将查询返回的记录集保存到一个新的Excel中了吗?经过一番努力,终于实现了,代码如下:
注意:
1.用法方法同样需先设置权限,可参考"ASP操作Excel技术总结"一文
2.此方法同样适用于将ACCESS中的记录保存至新的EXCEL文件中
使用Insert into语句往Excel工用表添加记录方法见"从Excel中筛选符合条件的记录保存至新的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技术总结",本博客中有收录:http://www.mzwu.com/article.asp?id=232。其中有一节说服务器中要设置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
%>
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
%>
注意:
1.用法方法同样需先设置权限,可参考"ASP操作Excel技术总结"一文
2.此方法同样适用于将ACCESS中的记录保存至新的EXCEL文件中
使用Insert into语句往Excel工用表添加记录方法见"从Excel中筛选符合条件的记录保存至新的Excel中(续)"
评论: 1 | 引用: 0 | 查看次数: 9526
发表评论
请登录后再发表评论!