ASP生成xls方法

 conn.asp文件内容(asp连接SQL,access数据库两用)

<%
dim dbtype,StrDB,StrConn,Conn
'请选择数据库类型:access为0,SQL为1
dbtype=0
'下面这些内容不要动
if dbtype=0 then
'请设置数据库路径(实际路径)
StrDB = "E:/ftp/web/test/db.mdb"
' 下面这行不要修改
StrConn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & StrDB
else
'更改下面这行里的server(数据库IP),uid(数据库的用户名),pwd(密码)database(库名)
StrConn="driver={SQL Server};server=192.168.0.1;uid=sa;pwd=;database=sqldb"
end if

Set conn=Server.CreateObject("adodb.connection")
conn.Open StrConn
%>

aspToxls.asp文件代码

<!-- #include file="conn.asp" -->
<%
'----------------------------------------------------- 使用说明 ---------------------------------------------------------
'本文件有两种生成方法
'方法一、直接生成Excel文件
'
' 1. 准备工作:(1)需建立临时文件夹用于存放生成文件,默认是本文件当前目录下新建temp文件夹
' 2. 参数:SQL
' 3. 说明:通用SQL参数调用数据库数据直接成生Excel文件到服务器指定文件夹(可更改drivers="temp/")
' 4. 使用例子:<a href="aspToxls.asp?SQL=Select * from TableName">点击这里生成</a>"
'
'方法二、通用模版生成Excel文件
'
' 1. 准备工作:(1)需建立临时文件夹用于存放生成文件(默认是当前目录下temp)
' (2)需建立模版文件夹(默认是当前目录下templet)
' (3)在模版文件夹中建立模版文件, 要求:第一行可合并单元格输入标题,第二行不能有合并单元格为输入字段名,其它行空白。
' 2. 参数:SQL,templetFileName(模版文件名)
'
' 3. 说明:打开指定文件夹中(可更改drivers="temp/")的模版,写入数据后生成到服务器指定文件夹(可更改drivers="temp/")
' 4. 使用例子:<a href="aspToxls.asp?templetFileName=li1.xls&SQL=Select * from TableName">点击这里生成</a>"

'------------------------- 更改下面一行选择生成Excel文件方法:selectAspToXlsPost=1或2-------------------------------------
selectAspToXlsPost=2

if selectAspToXlsPost=1 then
SQL=Request("SQL")
if SQL="" then
response.write "<script>alert('生成Excel文件方法一的参数不全!');</script>"
response.end
end if
else
SQL=Request("SQL")
templetFileName=Request("templetFileName")
if SQL="" or templetFileName="" then
response.write "<script>alert('生成Excel文件方法二的参数不全!');</script>"
response.end
end if
end if

%>

<HTML>
<HEAD>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
<TITLE>版权所有:yujie35 有问题可在百度知道里联系,文件出处: http://hi.baidu.com/my_java</TITLE>
<style>
A:{
FONT-SIZE: 12px; COLOR: #000065; TEXT-DECORATION: none
}
A:visited {
FONT-SIZE: 12px; COLOR: #000065; TEXT-DECORATION: none
}
A:hover {
FONT-SIZE: 12px; COLOR: #053099; TEXT-DECORATION: underline
}
A:active {
FONT-SIZE: 12px; COLOR: #053099; TEXT-DECORATION: underline
}

BODY {
SCROLLBAR-FACE-COLOR: #8da3ae; FONT-SIZE: 11pt; SCROLLBAR-HIGHLIGHT-COLOR: #bcced7; SCROLLBAR-SHADOW-COLOR: #a8a8a8; SCROLLBAR-3DLIGHT-COLOR: #c0c0c0; SCROLLBAR-ARROW-COLOR: #272d30; SCROLLBAR-TRACK-COLOR: #a8a8a8; FONT-FAMILY: 宋体; SCROLLBAR-DARKSHADOW-COLOR: #406476; BACKGROUND-COLOR: #e0ebed
}
TABLE {
FONT-SIZE: 12px; COLOR: #0f384b; FONT-FAMILY: "宋体"
}
</style>
</HEAD>
<body>
<center>
<%

'set conn=server.CreateObject("adodb.connection")
'conn.Open strconn

dim rs,sql,step,filename

step=Request("step") '读取步骤
filename=request("filename")'读取生成文件名

Set rs = Server.CreateObject("ADODB.Recordset")
sql = Request("SQL")
rs.Open sql,conn,1,3

IF rs.EOF and rs.BOF then
response.write "<script>alert('无数据记录,请重新查询!');</script>"
rs.close
set rs=nothing
response.end
end if

IF Request("step") = "next" then
Select Case selectAspToXlsPost
'--------------------------------------------------------- 生成Excel文件方法一 --------------------------------------------------------
Case 1

'-------------------生成文件的存放路径-------------------
drivers="temp/"


driverfilename=drivers&filename
Set fs = server.CreateObject("scripting.filesystemobject")

driverfilename= Server.MapPath(driverfilename)

if fs.FileExists(driverfilename) then fs.DeleteFile(driverfilename)
set myfile = fs.CreateTextFile(driverfilename,true)

dim strLine,responsestr
strLine=""
For each x in rs.fields
strLine = strLine & x.name & chr(9)
Next
myfile.writeline strLine
Do while Not rs.EOF
strLine=""

for each x in rs.Fields
if not isnull(x.value) then
strLine = strLine & replace(x.value,Chr(13)&Chr(10),"") & chr(9)
else
strLine = strLine & x.value & chr(9)
end if
next
myfile.writeline strLine
rs.MoveNext
loop

'---------------------------------------------------------- 生成Excel文件方法二 ---------------------------------------------------------
Case 2


Set fs = server.CreateObject("scripting.filesystemobject")
'-------------------生成文件的存放路径-------------------
targetFile="temp/"&fileName
'-------------------模版文件的存放路径-------------------
templetFile="templet/"&templetFileName

'检测模版文件是否存在
if not fs.FileExists(Server.MapPath(templetFile)) then
'fs.close
set fs=nothing
rs.close
set rs=nothing
response.write "<script>alert('模版文件不存在');location='welcome.asp';</script>"
response.end
else
fs.CopyFile Server.MapPath(templetFile),Server.MapPath(targetFile),True '复制模版文件到临时文件夹
end if

rcount=rs.Recordcount '数据库中数据行数
fcount=rs.fields.count '数据库中数据列数

fs.CopyFile server.mappath(templetFile),server.mappath(targetFile),true

'建立Excel.Application对象
dim objExcel,strRange
dim objExcelSheets,objExcelBook,objExcelSheet
'判断是否存在
if Isobject(objExcel) then
objExcel.Quit
set objExcel=nothing
end if
'创建EXCEL对象
set objExcel=CreateObject("Excel.Application")

'打开Excel模板
objExcel.Workbooks.Open(Server.MapPath(targetFile)) '打开Excel .end
objExcel.DisplayAlerts = false '是否显示警告
objExcel.Application.Visible = false '是否显示Excel文件

set objExcelBook = objExcel.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objExcelSheet = objExcelBook.Sheets(1)

On Error Resume Next
'---------得到excel有多少行和多少列数据
dim rowCount,CellCount
'-----得到当前EXCEL已经有的行数
rowcount = objExcelSheet.UsedRange.Rows.Count
'-----得到当前EXCEL已经有的列数
cellCount= objExcelSheet.UsedRange.Columns.Count
'response.write "rcount="&rcount&"fcount="&fcount&"<BR>rowcount="&rowcount&"cellcount="&cellcount

'向Excel写入数据
for i=1 to rcount
if rs.eof then exit for
for j=1 to fcount
objExcel.Cells(i+2,j).Value=Cstr(rs(j-1))
next
rs.movenext
next


'objExcel.SaveAs Server.MapPath("temp/reportSP.xls")
objExcel.Save
On Error Resume Next
'释放EXCLE对象内存,这点非常重要,否则的话会产生进程


objExcel.Quit
set objExcel=Nothing
set objExcelBook=nothing
set objExcelSheet=nothing
End Select

set rs=nothing
'rs.close
'set rs=nothing
%>
<table border="0" width="500" cellspacing="1" cellpadding="4" class="table" bgcolor="#808080">
<tr>
<td class="td_title" bgcolor="#FFFFFF">Excel表格文件:<%=filename%>生成成功</td>
</tr>
<tr>
<td class="td" bgcolor="#FFFFFF">点击<a href="temp/<%=filename%>">[这里]</a>下载&nbsp;<a href="javascript:history.go(-2);">返回</a></td>
</tr>

</table>
<% Else %>
<script>
//在javascript定义left,right函数
function left(str,len) {
return str.substring(0,len);
}

function right(str,len) {
return str.substring(str.length-len);
}
//------------------------------

function check_filename()
{
if(document.form1.filename.value=="")
{
alert("请给生成的Excel文件起名!")
document.form1.filename.focus();
return false;
}
else
{
if(right(document.form1.filename.value.toLowerCase(),4)!=".xls")
{
document.form1.filename.value+=".xls";
}
}

}
</script>
<form name="form1" action="<%=myself%>" method="post" οnsubmit="return check_filename()">
<input type="hidden" name="step" value="next">
<input type="hidden" name="SQL" value="<%=SQL%>">
<input type="hidden" name="templetFileName" value="<%=templetFileName%>">
<table border="0" width="500" cellspacing="1" cellpadding="4" class="table" bgcolor="#808080">
<tr>
<td colspan="3" class="td_title" bgcolor="#FFFFFF">生成Excel表格文件</td>
</tr>
<tr>
<td class="td" style="text-align: right" bgcolor="#FFFFFF">文件名:</td>
<td class="td" style="text-align: left" bgcolor="#FFFFFF"><input type="text" name="filename"></td>
</tr>
<tr>
<td colspan="3" class="td" bgcolor="#FFFFFF"><input type="submit" value="提交">&nbsp;&nbsp;<input type="button" value="返回" οnclick="javascript:history.go(-1);"></td>
</tr>
</table>
</form>
</body>
<% End If %>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值