目前需要将SQL2005中的查询结果导出到EXCEL中,在网上找到了导出ACCESS2010到EXCEL的
代码,但数据库换成SQL2005中后,导出不报错,可是在指定位置没有生成XLS,请大家帮忙解决一下。
以下是导出ACCESS2010到XLS的,速度很快,也不用设置单元格数据格式。
<%
dim a
a=request.form("Del_check") '要导出的记录ID号集合
if trim(a)="" then
ErrorMessage = "请先选择要导出的记录!"
response.write(" <script>alert('"&ErrorMessage&"');history.go(-1)</script>")
response.end
end if
if not isempty(request("Del_check")) then
idlist=request("Del_check")
'删除再重新创建以用户名命名的文件夹,用于保存导出的XLS
Set file = CreateObject("Scripting.FileSystemObject")
TempFolder=server.mappath("down/to_excel/" & session("yhm"))
if file.FOLDERExists(TempFolder) then '若临时目录存在,则删除之
on error resume next
file.deleteFOLDER TempFolder
if err.number<>0 then
err.clear
ErrorMessage = "删除临时文件夹发生错误!您可没有权限执行本项操作。"
response.write(" <script>alert('"&ErrorMessage&"');history.go(-1)</script>")
response.end
end if
end if
on error resume next
file.createFOLDER TempFolder
if err.number<>0 then
err.clear
ErrorMessage = "创建临时文件夹发生错误!您可没有权限执行本项操作。"
response.write(" <script>alert('"&ErrorMessage&"');history.go(-1)</script>")
response.end
end if
'连接数据库
%>
<!--#include file="#comeon#.asp"-->
<%
'生成要导出的XLS文件名及下载地址
filename=Server.MapPath("down/to_excel/" & session("yhm")& "/" & hour(now())& minute(now())&second(now()) & ".xls")
downurl="down/to_excel/" & session("yhm")& "/" & hour(now())& minute(now())&second(now()) & ".xls" '下载地址
'用下面这种方法导出XLS不仅速度快,而且对数据类型不会产生任何影响,比如身份证号,不会显示为科学计数法
Set rs=Server.CreateObject("Adodb.Recordset")
'根据用户选择的列进行导出
'**********就是这几行代码,没有成功生成XLS,但在ACCESS中是可以的
if session("zdyl")="" then
sql="select * into [excel 8.0;database="&filename&"].sheet1 from 材料类别 where ID in("&idlist&")"
else
sql="select "&session("zdyl")&" into [excel 8.0;database="&filename&"].sheet1 from 材料类别 where ID in("&idlist&")"
end if
rs.open sql,conn,1,1
rs.close
set rs=nothing
conn.close
set conn=nothing
set file=nothing
end if
%><p align="center"> </p>
<p align="center"><img border="0" src="Images/ok.png" width="88" height="86"><br><br><a href="<%=downurl%>">
<font size="2">点击此处下载导出的EXCEL文件</font></a></p>
<p align="center">
<input type="button" value="返 回" onclick="javascript:window.history.go(-1);">
</p>
强烈建议用NOPI,既方便又快,没那么麻烦的
<!--#include file="#conn#.asp"-->
<%
Set rs=Server.CreateObject("Adodb.Recordset")
sql="insert into OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 8.0;Database=c:\test.xls;','SELECT * FROM [sheet1$]') select * from 表名"
rs.open sql,conn,1,1
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
需要注意:
1、指定位置要先有XLS存在
2、XLS中要先有表头,并且与要导出的旬一一对应