利用ASP制作EXECL报表方法(一) (1)
很多时候我们需要把表格形式的数据转换成EXECL的形式呈现在用户面前,其中有好几个方法可以做到一点,我将介绍一种利用ASP完成的方法,该方法答应服务器动态地创建EXECL报表而且不用占用任何服务器空间。该方法还答应多个用户同时收到该数据。但是该方法至少需要EXECL 97的支持。
废话少说,要完成这个工作最重要的是要告诉浏览器HTTP头,就用如下代码
%26lt;%
Response.ContentType = %26quot;application/vnd.ms-excel%26quot;
%%26gt;
下面来看一个例子,假设现在有如下形式的数据
flavorqty_bakedqty_eatenqty_soldprice
Boston242100.5
Jelly241120.5
Strawberry361150.5
Chocolate24260.75
Maple12160.75
客户要求用EXECL的形式表现出来,并且希望其中能加上其他一些计算汇总
用如下代码
……
%26lt;%
Response.ContentType = %26quot;application/vnd.ms-excel%26quot;
set conntemp=server.createobject(%26quot;adodb.connection%26quot;)
cnpath=%26quot;DBQ=%26quot; %26amp; server.mappath(%26quot;/stevesmith/data/timesheet.mdb%26quot;)
conntemp.Open %26quot;DRIVER={Microsoft Access Driver (*.mdb)}; %26quot; %26amp; cnpath
set RS=conntemp.execute(%26quot;select * from donut%26quot;)
%%26gt;
%26lt;TABLE BORDER=1%26gt;
%26lt;TR%26gt;
%26lt;%
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' % Loop through Fields Names and print out the Field Names
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
j = 2 'row counter
For i = 0 to RS.Fields.Count - 1
%%26gt;
%26lt;TD%26gt;%26lt;B%26gt;%26lt;% = RS(i).Name %%26gt;%26lt;/B%26gt;%26lt;/TD%26gt;
%26lt;% Next %%26gt;
%26lt;TD%26gt;%26lt;B%26gt;On Hand (calculated)%26lt;/B%26gt;%26lt;/TD%26gt;
%26lt;TD%26gt;%26lt;B%26gt;Gross (calculated)%26lt;/B%26gt;%26lt;/TD%26gt;
%26lt;/TR%26gt;
%26lt;%
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' % Loop through rows, displaying each field
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Do While Not RS.EOF
%%26gt;
%26lt;TR%26gt;
%26lt;% For i = 0 to RS.Fields.Count - 1
%%26gt;
%26lt;TD VALIGN=TOP%26gt;%26lt;% = RS(i) %%26gt;%26lt;/TD%26gt;
%26lt;% Next %%26gt;
%26lt;TD%26gt;=b%26lt;%=j%%26gt;-c%26lt;%=j%%26gt;-d%26lt;%=j%%26gt;%26lt;/TD%26gt;
%26lt;TD%26gt;=d%26lt;%=j%%26gt;*e%26lt;%=j%%26gt;%26lt;/TD%26gt;
%26lt;/TR%26gt;
%26lt;%
RS.MoveNext
j = j + 1
Loop
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' % Make sure to close the Result Set and the Connection object
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
RS.Close
%%26gt;
%26lt;TR BGCOLOR=RED%26gt;
%26lt;TD%26gt;Totals%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(B2:B6)%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(C2:C6)%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(D2:D6)%26lt;/TD%26gt;
%26lt;TD%26gt;n/a%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(F2:F6)%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(G2:G6)%26lt;/TD%26gt;
%26lt;/TABLE%26gt;
……
这样我们就实现了目的,用户可以在浏览器窗口就打开它进行简单操作,也可以保存到硬盘上进行其他操作。我还将介绍一种利用filesystemobject操作的方法。请稍候。)
废话少说,要完成这个工作最重要的是要告诉浏览器HTTP头,就用如下代码
%26lt;%
Response.ContentType = %26quot;application/vnd.ms-excel%26quot;
%%26gt;
下面来看一个例子,假设现在有如下形式的数据
flavorqty_bakedqty_eatenqty_soldprice
Boston242100.5
Jelly241120.5
Strawberry361150.5
Chocolate24260.75
Maple12160.75
客户要求用EXECL的形式表现出来,并且希望其中能加上其他一些计算汇总
用如下代码
……
%26lt;%
Response.ContentType = %26quot;application/vnd.ms-excel%26quot;
set conntemp=server.createobject(%26quot;adodb.connection%26quot;)
cnpath=%26quot;DBQ=%26quot; %26amp; server.mappath(%26quot;/stevesmith/data/timesheet.mdb%26quot;)
conntemp.Open %26quot;DRIVER={Microsoft Access Driver (*.mdb)}; %26quot; %26amp; cnpath
set RS=conntemp.execute(%26quot;select * from donut%26quot;)
%%26gt;
%26lt;TABLE BORDER=1%26gt;
%26lt;TR%26gt;
%26lt;%
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' % Loop through Fields Names and print out the Field Names
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
j = 2 'row counter
For i = 0 to RS.Fields.Count - 1
%%26gt;
%26lt;TD%26gt;%26lt;B%26gt;%26lt;% = RS(i).Name %%26gt;%26lt;/B%26gt;%26lt;/TD%26gt;
%26lt;% Next %%26gt;
%26lt;TD%26gt;%26lt;B%26gt;On Hand (calculated)%26lt;/B%26gt;%26lt;/TD%26gt;
%26lt;TD%26gt;%26lt;B%26gt;Gross (calculated)%26lt;/B%26gt;%26lt;/TD%26gt;
%26lt;/TR%26gt;
%26lt;%
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' % Loop through rows, displaying each field
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Do While Not RS.EOF
%%26gt;
%26lt;TR%26gt;
%26lt;% For i = 0 to RS.Fields.Count - 1
%%26gt;
%26lt;TD VALIGN=TOP%26gt;%26lt;% = RS(i) %%26gt;%26lt;/TD%26gt;
%26lt;% Next %%26gt;
%26lt;TD%26gt;=b%26lt;%=j%%26gt;-c%26lt;%=j%%26gt;-d%26lt;%=j%%26gt;%26lt;/TD%26gt;
%26lt;TD%26gt;=d%26lt;%=j%%26gt;*e%26lt;%=j%%26gt;%26lt;/TD%26gt;
%26lt;/TR%26gt;
%26lt;%
RS.MoveNext
j = j + 1
Loop
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' % Make sure to close the Result Set and the Connection object
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
RS.Close
%%26gt;
%26lt;TR BGCOLOR=RED%26gt;
%26lt;TD%26gt;Totals%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(B2:B6)%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(C2:C6)%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(D2:D6)%26lt;/TD%26gt;
%26lt;TD%26gt;n/a%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(F2:F6)%26lt;/TD%26gt;
%26lt;TD%26gt;=SUM(G2:G6)%26lt;/TD%26gt;
%26lt;/TABLE%26gt;
……
这样我们就实现了目的,用户可以在浏览器窗口就打开它进行简单操作,也可以保存到硬盘上进行其他操作。我还将介绍一种利用filesystemobject操作的方法。请稍候。)





