到目前为止,有好几种方法可以使用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主页,将该主页添加到VisualInterDev项目中,文件名为ContentType.asp,如同图A。然后将代码A所显示的代码添加到主页中,第一行代码可以将所涉及主页的mimetype转变为Excelmimetype。下面几行代码将启动我们早先建立的组件以获取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。注意该电子表格中的所有行并未实行任何格式化处理。当我们使用ExcelVBA组件创立工作表格时,我们可以利用VBA方式对表格加以调整。但是,在使用HTML方式下对表格加以通常的格式化处理是比较困难的,除非你能方便地显示和读取HTML表格的有关数据。利用ASP主页技术我们能够做到这一点,而且可以实现目前MicrosoftExcel所支持的所有功能,其中包括SUM功能。需要注意的是,利用HTML创立的工作表格中没有包括一些标准的标示符号,例如<HTML>及<BODY>。当我们建立与Excel工作表格互换数据的HTML表格时,尽量不要在ASP主页中使用<HTML>,<BODY>,<HEAD>等标示符号,因为Excel工作表格通常无法正确这些标示符号。