基本信息
源码名称:asp中如何在客户端把查询的结果集在本机上保存为excel
源码大小:5.37KB
文件格式:.asp
开发语言:ASP
更新时间:2015-07-23
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
保存的代码:
<%
Class ExcelGen
Private objSpreadsheet
Private iColOffset
Private iRowOffset
Sub Class_Initialize()
Set objSpreadsheet = Server.CreateObject( "OWC.Spreadsheet ")
'Set objSpreadsheet = Server.CreateObject( "Excel.Application ")
iRowOffset = 2
iColOffset = 2
End Sub
Sub Class_Terminate()
Set objSpreadsheet = Nothing 'Clean up
End Sub
Public Property Let ColumnOffset(iColOff)
If iColOff > 0 then
iColOffset = iColOff
Else
iColOffset = 2
End If
End Property
Public Property Let RowOffset(iRowOff)
If iRowOff> 0 then
iRowOffset = iRowOff
Else
iRowOffset = 2
End If
End Property
Sub GenerateWorksheet(objRS)
'Populates the Excel worksheet based on a Recordset 's contents
'Start by displaying the titles
If objRS.EOF then Exit Sub
Dim objField, iCol, iRow
iCol = iColOffset
iRow = iRowOffset
For Each objField in objRS.Fields
objSpreadsheet.Cells(iRow, iCol).Value = objField.Name
objSpreadsheet.Columns(iCol).AutoFitColumns
'设置Excel表里的字体
objSpreadsheet.Cells(iRow, iCol).Font.Bold = True
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
objSpreadsheet.Cells(iRow, iCol).Halignment = 2 '居中
iCol = iCol 1
Next 'objField
'Display all of the data
Do While Not objRS.EOF
iRow = iRow 1
iCol = iColOffset
'For Each objField in objRS.Fields
'If IsNull(objField.Value) then
'objSpreadsheet.Cells(iRow, iCol).Value = " "
'Else
'objSpreadsheet.Cells(iRow, iCol).Value = objField.Value
'objSpreadsheet.Columns(iCol).AutoFitColumns
'objSpreadsheet.Cells(iRow, iCol).Font.Bold = False
'objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
'objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
'End If
'iCol = iCol 1
'Next 'objField
For i=0 to objrs.fields.count-1
If IsNull(objrs.fields(i).value) then
objSpreadsheet.Cells(iRow, iCol).Value = " "
Elseif i=3 then
objSpreadsheet.Cells(iRow, iCol).Value = cstr(objrs.fields(i).value& " ' ")
objSpreadsheet.Columns(iCol).AutoFitColumns
objSpreadsheet.Cells(iRow, iCol).Font.Bold = False
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
else
objSpreadsheet.Cells(iRow, iCol).Value = objrs.fields(i).value
objSpreadsheet.Columns(iCol).AutoFitColumns
objSpreadsheet.Cells(iRow, iCol).Font.Bold = False
objSpreadsheet.Cells(iRow, iCol).Font.Italic = False
objSpreadsheet.Cells(iRow, iCol).Font.Size = 10
End If
iCol = iCol 1
Next 'objField
objRS.MoveNext
Loop
End Sub
Function SaveWorksheet(strFileName)
'Save the worksheet to a specified filename
On Error Resume Next
Call objSpreadsheet.ActiveSheet.Export(strFileName, 0)
SaveWorksheet = (Err.Number = 0)
End Function
End Class
Dim objRS
Set objRS = Server.CreateObject( "ADODB.Recordset ")
Set con=Server.Createobject( "ADODB.Connection ")
con.open "provider=microsoft.jet.oledb.4.0;data source= "& server.MapPath( ". "& "/database/project.mdb ")
objRS.Open session( "sql "), con,1,1
Dim SaveName
SaveName = Request.Cookies( "savename ")( "name ")
Dim objExcel
Dim ExcelPath
ExcelPath = "Excel\ " & SaveName & ".xls "
Set objExcel = New ExcelGen
objExcel.RowOffset = 1
objExcel.ColumnOffset = 1
objExcel.GenerateWorksheet(objRS)
If objExcel.SaveWorksheet( "c:/test.xls ") then %>
<script language= "javascript ">
window.alert( "数据已经保存在C盘下test.xls文件里,请核实. ");
history.back();
</script>
<%
Else
Response.Write( " <script language=javascript> window.alert(数据保存失败。); </script> ")
End If
Set objExcel = Nothing
objRS.Close
Set objRS = Nothing
'session( "sql ")= " "
%>
================
session( "Sql ")保存的是查询的sql语句
运行完后test.xls就保存在了服务器上了。但是我想保存在客户端上(在客户端上运行完后保存在了服务器上 服务器是运行iis这台机子)
客户端:
查询页面: <input type=button value= "导出 " onClick= "javascript:export_onclick(); ">
function export_onclick()
{
window.location.href = "rp_export.asp?reports_sql= " sql;//这里的sql可以用你的session( "Sql ")
}
rp_export.asp:
<%@ Language=VBScript%>
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> 无标题文档 </title>
</head>
<body>
<%
Response.Clear
Response.ContentType = "text/xls "
Response.AddHeader "content-disposition ", "attachment; filename=export.xls "
'点导出按钮后事件
set conn=server.createobject( "adodb.connection ")
conn.open "sql server驱动 "
SQL=session( "Sql ")
'Set rs=Server.CreateObject( "Adodb.RecordSet ")
Set rs=conn.execute(SQL)
total=rs.fields.count
while not rs.eof
i=0
while i <cint(total)
Data=Data&rs(i)&chr(9)
i=i 1
wend
Response.Write Data&chr(13)
Data= " "
rs.moveNext
wend
rs.close
conn.close
Response.Flush
Response.End
%>
</body>
</html>