excel|技巧|資料
學習如何建立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>
</TABLE>
結論有好幾種不同的方式可以利用瀏覽器應用程式顯示Excel工作表格。 具體使用哪一種方式要依照不同情況而定:你所要實行的資料處理是在客戶機上還是在伺服器中? 在程式運行過程當中是否需要多種的格式化處理? 終端使用者所使用的是否是IE瀏覽器?如果你的工作表格比較複雜而且十分重要,你最好是考慮建立一Excel模板,然後利用伺服器端VBA COM將數值填入。 如果你的工作表格比較簡單或者只是在客戶機端運行處理,你可以考慮使用HTML資料流處理。另一方面,如果你的使用者使用的是Netscape Navigator瀏覽器,那麼你的所有的資料處理必須在伺服器端運行並使用COM VBA組件。