日期:2010-11-01 浏览次数:20794 次
学习如何建立ASP页面将HTML数据流传送到Execl电子表格,并且在IE中显示Execl电子表格。
到目前为止,有好几种方法可以使用ASP技术来创立Excel数据表格,你还可以利用服务器端Excel 8.0 VBA组件建立电子数据表。但是,某些情况下服务器可能无法处理所涉及到的信息量或无法承担所形成的工作负载,因此你不得不牺牲某些为客户机提供的处理性能。本文将主要讨论有关客户端的数据表格处理问题。Excel 97具有某些特别的性能可以象处理电子表格一样处理HTML格式数据流,这一特别的处理能力仅在Excel 97或更高版本中才具有,而且用户需要建立类似Excel电子表格数据流才能更有效的给以处理。
那么,浏览器是否也具有类似功能呢?Internet Explorer(IE)3.0或更高版本能够像Excel一样显示Microsoft Excel 工作表格, 前提是客户机需要装栽 Excel。 如果用户打开IE浏览器并输入Excel工作表格文件名做为URL,IE就会打开工作表。IE利用文件的扩展名以辨别是否是mime格式文件并启动相应的应用程序, 当IE处理Excel mime格式文件时,IE将该文件转变为application/vnd.ms- excel并启动Excel供用户查看有关的表格数据。
本文将讨论如何建立ASP主页,该主页能够将HTML数据流传送给Excel电子数据表。 利用这一技术IE浏览器可以像Excel那样显示HTML数据表。在下面的例子当中, ASP主页将启动一组件,该组件可以处理存储在NWIND SQLSever 6.5中的雇员表记录,同时将该表以HTML表格形式显示。
建立HTML表格
首先建立ASP主页,将该主页添加到Visual InterDev项目中,文件名为ContentType.asp, 如同图 A 。然后将代码A所显示的代码添加到主页中,第一行代码可以将所涉及主页的mime type转变为Excel mime type。下面几行代码将启动我们早先建立的组件以获取ADOR记录区的数据。 这些代码如同ListingA中所显示将在记录区循环处理并建立一个HTML表格, 该表格包括雇员表中每行的记录。
代码 A:Code for adding new ASP page to Visual InterDev Project
<%@ Language=VBScript %>
<%Response.ContentType = "application/vnd.ms-excel"%>
<%
Dim objEmployee, rs
set objEmployee=server.CreateObject("EmpReport.Employee")
Set rs = objEmployee.GetEmployee()
'Draw a Table
%>
<TABLE>
<TR>
<TD><STRONG><FONT FACE="" size=4>Employee
Report</FONT></STRONG></TD>
</TR>
<TR>
<TD>Employee Id</TD>
<TD>First Name</TD>
<TD>Last Name</TD>
<TD>Title</TD>
</TR>
<%
Do while not rs.eof
%>
<TR>
<TD>
<%=rs("EmployeeId")%></TD>
<TD>
<%=rs("LastName")%></TD>
<TD>
<%=rs("FirstName")%></TD>
<TD>
<%=rs("Title")%></TD>
</TR>
<%
rs.movenext
loop
%></TABLE>
完成输入代码后, 保存并浏览该主页。该主页如同图 B 。注意该电子表格中的所有行并未实行任何格式化处理。当我们使用Excel VBA组件创立工作表格时,我们可以利用VBA方式对表格加以调整。 但是,在使用HTML方式下对表格加以通常的格式化处理是比较困难的,除非你能方便地显示和读取HTML表格的有关数据。利用ASP主页技术我们能够做到这一点,而且可以实现目前Microsoft Excel所支持的所有功能, 其中包括SUM功能。需要注意的是,利用HTML创立的工作表格中没有包括一些标准的标示符号,例如<HTML> 及<BODY>。当我们建立与Excel工作表格互换数据的HTML表格时,尽量不要在ASP主页中使用<HTML>,<BODY>,<HEAD>等标示符号,因为Excel工作表格通常无法正确这些标示符号。
在HTML表格中使用标准的Excel功能
Excel 97允许用户利用Excel所具有的运算公式在HTML表格中实行标准的计算处理,例如使用total及sum等运算功能。利用这一特点的显著优势是,将需要实行计算处理的工作表格移到客户端处理从而极大的减少了对宝贵的服务器资源的占用,同时也减少了在服务器与客户机之间实行信息传递的网络负担。例如图 C 所示起名为sumit.asp的主页的情况, 建立的HTML表格显示了Excel工作表格中两列的总和。 请注意代码B中的代码, 第一行代码将表中的内容格式转变为Excel格式, 如此浏览器将得知是哪种类型的应用程序在为HTML表格传递数据。我们建立了一个具有两列的表格,第二列行中包括了两组数值:2和3。第三行中的数值为前两个数值的总和,这里使用的是Excel的=sum(b1:b2)计算功能。
代码 B: Code for creating an HTML table that displays sum of two columns in Excel worksheet
<%@ Language=VBScript %>
<%Response.ContentType = "application/vnd.ms-excel"%>
<TABLE>
<TR>
<TD></TD>
<TD><!-- Cell : B1 -->2</TD>
</TR>
<TR>
<TD></TD>
<TD><!--Cell : B2 -->3</TD>
</TR>
<TR>
<TD><STRONG>Sum</STRONG></TD>
<TD>=SUM(B1:B2)</TD>
</TR>
&l