学院首页>网络编程>ASP>利用ASP制作EXECL报表方法(二)

利用ASP制作EXECL报表方法(二)

作者: 来源:不详 添加时间:2006-5-25 19:03:49
  废话少说,请看代码:
runquery.asp

<%@ LANGUAGE="VBSCRIPT" %>
<%
'DSNless connection to Access Database
strDSNPath = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("testDB.mdb")
%>
<!--#include file="adovbs.inc" -->  请自己COPY这个文件
<%
  server.scripttimeout=1000
 Response.Buffer = True
 
 if(Request.Form("ReturnAS") = "Content") then
  Response.ContentType = "application/msexcel"
 end if
 Response.Expires = 0
 
 dim oConn
 dim oRS
 dim strSQL
 dim strFile
  
 Set oConn = Server.CreateObject("ADODB.Connection")
 Set oRS = Server.CreateObject("ADODB.Recordset")
 strSQL = BuildSQL()
  
 oRS.Open strSQL, strDSNPath, adOpenForwardOnly, adLockReadOnly, adCmdText
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
 <title>Excel Export Demo</title>
</head>
<body>
<%
 if(Request.Form("ReturnAS") = "CSV") then
  CreateCSVFile()
 else if(Request.Form("ReturnAS") = "Excel") then
  CreateXlsFile()  
 else if(Request.Form("ReturnAS") = "HTML") then
  GenHTML()
 else if(Request.Form("ReturnAS") = "Content") then
  GenHTML()  
 end if
 end if
 end if
 end if

 Set oRS = Nothing
 Set oConn = Nothing  
 Response.Flush
%>
</body>
</html>
<SCRIPT LANGUAGE=vbscript RUNAT=Server>
Function BuildSQL()
 dim strSQL
 dim strTemp
 
 strTemp = ""
 strSQL = "select year, region, sales_amt from sales"
 
 if(Request.Form("Year") <> "ALL") then
  strTemp = " where Year = "
  strTemp = strTemp & Request.Form("Year")
 end if
 
 if(Request.Form("Region") <> "ALL") then
  if(Len(strTemp) > 0) then
strTemp = strTemp & " and Region = "
  else
strTemp = strSTL & " where Region = "
  end if
  strTemp = strTemp & "'"
  strTemp = strTemp & Request.Form("Region")
  strTemp = strTemp & "'"
 end if

 BuildSQL = strSQL & strTemp
End Function

Function GenFileName()
 dim fname
 
 fname = "File"
 systime=now()
 fname= fname & cstr(year(systime)) & cstr(month(systime)) & cstr(day(systime))
 fname= fname  & cstr(hour(systime)) & cstr(minute(systime)) & cstr(second(systime))
 GenFileName = fname
End Function

Function GenHTML()
 Response.Write("<DIV ALIGN=center><FONT SIZE=+1>Sales Reporting</FONT></DIV>")
 Response.Write("<TABLE WIDTH=100% BORDER=1 CELLSPACING=1 CELLPADDING=1>")
 Response.Write("<TR>")
 Response.Write(" <TD>Year</TD>")
 Response.Write(" <TD>Region</TD>")
 Response.Write(" <TD>Sales</TD>")
 Response.Write("</TR>")
 if(oRS.BOF = True and oRS.EOF = True) then
  Response.Write("Database Empty")
 else
oRS.MoveFirst
Do While Not oRS.EOF
Response.Write("<TR>")
Response.Write("<TD>")
Response.Write(oRS.Fields("Year").Value)
Response.Write("</TD>")
Response.Write("<TD>")
Response.Write(oRS.Fields("Region").Value)
Response.Write("</TD>")
Response.Write("<TD>")
Response.Write(oRS.Fields("Sales_Amt").Value)
Response.Write("</TD>")
Response.Write("</TR>")
oRS.MoveNext
  Loop
  Response.Write("</TABLE>")
 End if
End Function

Function CreateCSVFile()

strFile = GenFileName()
 Set fs = Server.CreateObject("Scripting.FileSystemObject")
 Set a = fs.CreateTextFile(server.MapPath(".") & "\" & strFile & ".csv",True)
 If Not oRS.EOF Then
  strtext = chr(34) & "Year" & chr(34) & ","
  strtext = strtext & chr(34) & "Region" & chr(34) & ","
  strtext = strtext & chr(34) & "Sales" & chr(34) & ","
  a.WriteLine(strtext)
  Do Until oRS.EOF
For i = 0 To oRS.fields.Count-1
 strtext = chr(34) & oRS.fields(i) & chr(34) & ","
 a.Write(strtext)
Next
a.Writeline()
oRS.MoveNext
  Loop
 End If
 a.Close
 Set fs=Nothing 
 Response.Write("Click <A HRef=" & strFile & ".csv>Here</A> to to get CSV file") 
End Function
Function CreateXlsFile()
 Dim xlWorkSheet  ' Excel Worksheet object
 Dim xlApplication
 
 Set xlApplication = CreateObject("Excel.application")
 xlApplication.Visible = False
 xlApplication.Workbooks.Add
 Set xlWorksheet = xlApplication.Worksheets(1)
 xlWorksheet.Cells(1,1).Value = "Year"
 xlWorksheet.Cells(1,1).Interior.ColorIndex = 5 
 xlWorksheet.Cells(1,2).Value = "Region"
 xlWorksheet.Cells(1,2).Interior.ColorIndex = 5
 xlWorksheet.Cells(1,3).Value = "Sales"
 xlWorksheet.Cells(1,3).Interior.ColorIndex = 5
  
 iRow = 2
 If Not oRS.EOF Then
  Do Until oRS.EOF
  For i = 0 To oRS.fields.Count-1
xlWorksheet.Cells(iRow,i + 1).Value = oRS.fields(i)
xlWorkSheet.Cells(iRow,i + 1).Interior.ColorIndex = 4
  Next
  iRow = iRow + 1
  oRS.MoveNext
 Loop
 End If
 strFile = GenFileName()
 xlWorksheet.SaveAs Server.MapPath(".") & "\" & strFile & ".xls"
 xlApplication.Quit' Close the Workbook
 Set xlWorksheet = Nothing
 Set xlApplication = Nothing
 Response.Write("Click <A HRef=" & strFile & ".xls>Here</A> to get XLS file") 
End Function
</script>
%>

main.htm

<!-- frames -->
<FRAMESET  ROWS="20%,*">
 <FRAME NAME="Request" SRC="request.html" MARGINWIDTH="10" MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="yes">
 <FRAME NAME="Result" SRC="welcome.html" MARGINWIDTH="10" MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="yes">
</FRAMESET>

request.htm

<html>
<head>
 <title>Sales Report Demo</title>
</head>

<body>

<DIV ALIGN="center"><FONT SIZE="+1">Sales Reporting</FONT></DIV>
<FORM ACTION="runquery.asp" METHOD="POST" target=Result>
 Year <SELECT NAME="Year">
  <OPTION VALUE="ALL">ALL</OPTION>
  <OPTION VALUE="1995">1995</OPTION>
  <OPTION VALUE="1996">1996</OPTION>
  <OPTION VALUE="1997">1997</OPTION>
  <OPTION VALUE="1998">1998</OPTION>
  <OPTION VALUE="1999">1999</OPTION>
  </SELECT>
 &nbsp;  
 Region  <SELECT NAME="Region">
  <OPTION VALUE="ALL">ALL</OPTION>
  <OPTION VALUE="North">North</OPTION>
  <OPTION VALUE="East">East</OPTION>
  <OPTION VALUE="South">South</OPTION>
 <OPTION VALUE="West">West</OPTION>
  </SELECT>
 &nbsp;
 Return Results Using
  <SELECT NAME="ReturnAS">
  <OPTION VALUE="HTML">HTML Table</OPTION>
  <OPTION VALUE="Content">Content Type</OPTION>
  <OPTION VALUE="CSV">CSV</OPTION>
  <OPTION VALUE="Excel">Native Excel</OPTION>
  </SELECT>
 &nbsp; 
 &nbsp;
<INPUT TYPE="Submit" NAME="Submit" VALUE="Submit"> 
</FORM>
</body>
</html>

welcome.htm
<html>
<head>
 <title>Sales Report Demo</title>
</head>

<body>



</body>
</html>

数据库结构
testDB.Mdb
表sales
year数字
Region  文本
Sales_Amt 货币

本文原始出处为国外一网站,并经过BATMAN的休正。

 
站内搜索