到目前为止,有好几种方法可以使用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:
CodeforaddingnewASPpagetoVisualInterDevProject
%@Language=VBscript%
%Response.ContentType="application/vnd.ms-excel"%
%
DimobjEmployee,rs
setobjEmployee=server.CreateObject("EmpReport.Employee")
Setrs=objEmployee.GetEmployee()
'DrawaTable
%
TABLE
TR
TDSTRONGFONTFACE=""size=4Employee
Report/FONT/STRONG/TD
/TR
TR
TDEmployeeId/TD
TDFirstName/TD
TDLastName/TD
TDTitle/TD
/TR
%
Dowhilenotrs.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工作表格通常无法正确这些标示符号。
在HTML表格中使用标准的Excel功能
Excel97允许用户利用Excel所具有的运算公式在HTML表格中实行标准的计算处理,例如使用total及sum等运算功能。利用这一特点的显著优势是,将需要实行计算处理的工作表格移到客户端处理从而极大的减少了对宝贵的服务器资源的占用,同时也减少了在服务器与客户机之间实行信息传递的网络负担。例如图C所示起名为sumit.asp的主页的情况,建立的HTML表格显示了Excel工作表格中两列的总和。请注意代码B中的代码,第一行代码将表中的内容格式转变为Excel格式,如此浏览器将得知是哪种类型的应用程序在为HTML表格传递数据。我们建立了一个具有两列的表格,第二列行中包括了两组数值:2和3。第三行中的数值为前两个数值的总和,这里使用的是Excel的=sum(b1:b2)计算功能。
图C
代码B:
CodeforcreatinganHTMLtablethatdisplayssumoftwocolumnsinExcelworksheet
%@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
TDSTRONGSum/STRONG/TD
TD=SUM(B1:B2)/TD
/TR
/TABLE
结论
有好几种不同的方式可以利用浏览器应用程序显示Excel工作表格。具体使用哪一种方式要依照不同情况而定:
你所要实行的数据处理是在客户机上还是在服务器中?
在程序运行过程当中是否需要多种的格式化处理?
最终用户所使用的是否是IE浏览器?
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)如果你的工作表格比较复杂而且十分重要,你最好是考虑建立一Excel模板,然后利用服务器端VBACOM将数值填入。如果你的工作表格比较简单或者只是在客户机端运行处理,你可以考虑使用HTML数据流处理。另一方面,如果你的用户使用的是NetscapeNavigator浏览器,那么你的所有的数据处理必须在服务器端运行并使用COMVBA组件。