如何使用伺服器端圖表動態地產生圖表

文章翻譯 文章翻譯
文章編號: 244049 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

除了將 Microsoft Office Chart Web 元件當做表單上所管理的「元件物件模型」(Component Object Model,COM) 控制項使用以外,Chart Web 元件還可以當做不可見的記憶體中物件。本文將告訴您,如何在伺服器上使用 Chart Web 元件,建立以「圖形交換格式」(GIF) 影像顯示的圖表。您可以實作本文所述的策略,以產生可以透過網際網路或在具有異質性用戶端電腦之企業環境中使用的圖表影像。

其他相關資訊

透過 Chart Web 元件,您可以使用各種來源 (例如陣列、資料庫、試算表或任何自訂資料來源) 的資料建立圖表。建立圖表之後,您就可以使用 Chart 元件的 ExportPicture 方法,產生該圖表的 GIF 影像。

如果要執行這項操作,您可以修改 global.asa 檔案,並利用下列步驟所述的程式碼建立 ASP 網頁。

建立專案的步驟

  1. 啟動 Microsoft Visual InterDev。
  2. 建立名為 ServerChart 的新 Web 專案,再按一下 [Next] 按鈕。
  3. 輸入要用於此 Web 專案的伺服器。
  4. 按一下 [Finish] 建立 Web 專案。
  5. 用滑鼠右鍵按一下伺服器上的專案目錄 (通常是 C:\Inetpub\wwwroot\ServerChart),選取 [內容],然後按一下 [安全性] 索引標籤。
  6. 按一下 [權限],並新增下列目錄權限:
    IUSR_SERVERNAME:讀取、寫入、執行及刪除
    Creator:讀取、寫入、執行及刪除
  7. 按一下 [確定] 以設定權限。
  8. 在 Visual InterDev 專案中,用滑鼠右鍵按一下 global.asa 檔案並選取 [Get Working Copy]
  9. 修改 global.asa 檔案以包含下列指令碼:
    <SCRIPT LANGUAGE=VBScript RUNAT=Server>
    
    Sub Session_OnStart
    	' Create a FileSystemObject to provide files in the script
    	Set Session("FSO") = CreateObject("Scripting.FileSystemObject")
    	
    	' Create a variable that has the number of files created in this session
    	Session("n") = 0
    	
    	' Set timeout to be 1 minute
    	Session.Timeout = 1
    End Sub
    
    Sub Session_OnEnd
    	' Delete the files created in this session
    	Dim x
    	For x = 0 to Session("n")-1
    		Session("FSO").DeleteFile Session("sTempFile" & x), True
    	Next
    End Sub
    </SCRIPT>
  10. 按一下 [Project] 功能表,選取 [Add Web Item],然後選取 [Active Server Page]。將網頁命名為 chart.asp
  11. 修改 chart.asp 中的指令碼以包含下列內容:
    <%@ language="vbscript" %>
    <html>
    <body>
    <h1>Realtime CPU Utilization by Configurations</h1>
    
    <FORM action="chart.asp" method=get name=frmChooseOrg>
    
    <p> Select an Organization to see values for their machines: 
    
    <SELECT name=sOrg>
    <OPTION SELECTED value= 5>Org1</OPTION>
    <OPTION value= 10>Org2</OPTION>
    <OPTION value= 15>Org3</OPTION>
    
    <OPTION value= 20>Org4</OPTION>
    </SELECT>
    
    <INPUT type="submit" value="Go"></p>
    
    </FORM>
    
    <%
    
    Dim oChart, c, Categories(5), Vals(5), i, sCaption, nData, nOrg
    
    ' Get the input value
    nData = Request.QueryString("sOrg")
    
    'When the page loads the first time, set ndata to 5
    if len(nData) = 0 then nData = 5
    
    ' Generate random categories and values for the chart
    ' These values can come from some existing data source
    for i = 1 to 5
    	Categories(i) = "Machine" & CStr(i)
    	Vals(i) = nData * Rnd(100)
    next
    
    ' Create a Chart Object
    Set oChart = CreateObject("OWC.Chart")
    Set c = oChart.Constants
    
    ' Set the different parameters for the ChartSpace
    oChart.Border.Color = c.chColorNone
    
    ' Get Organization number and use it to set the Caption
    nOrg = nData/5
    sCaption = "Current Utilizations for Org"
    sCaption = sCaption & CStr(nOrg)
    
    ' Add a chart and set parameters for the chart
    oChart.Charts.Add
    oChart.Charts(0).Type = oChart.Constants.chChartTypeColumnClustered
    oChart.Charts(0).SeriesCollection.Add
    oChart.Charts(0).SeriesCollection(0).Caption = sCaption
    oChart.Charts(0).SeriesCollection(0).SetData c.chDimCategories, c.chDataLiteral, Categories
    oChart.Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, Vals
    oChart.Charts(0).HasLegend = True
    oChart.Charts(0).HasTitle = True
    
    ' Get a temporary filename to save chart in that file
    sFname = Session("FSO").GetTempName & session.SessionID & ".gif"
    
    ' Export the chart to the temporary file
    oChart.ExportPicture server.MapPath(sFname), "gif", 600, 512
    
    ' Create a link to the generated file
    Response.Write "<img src='" & sFname & "'>"
    
    ' Store the file with its path in the session object for cleanup
    Session("sTempFile" & Session("n")) = Server.MapPath(sFname)
    
    ' Increment the number of files
    Session("n") = Session("n") + 1
    
    %>
    
    </body>
    </html>
    					
  12. 儲存專案。
  13. 用滑鼠右鍵按一下 [Project Explorer] 中的 chart.asp,然後選取瀏覽器中的 [檢視]
網頁會顯示圖表,其中含有不同電腦的 CPU 使用率。您可以選取不同的組織,以檢視不同的使用率。

當您根據不同資料集來建立多個圖表時,每個圖表必須另存為唯一的 GIF 檔案。在這個範例中,指令碼執行階段程式庫的 FileSystemObject 會為 GIF 影像產生暫存檔。此檔案會存放在與 ASP 網頁相同的資料夾中,讓您可以使用 Session 物件的 MapPath 方法取得暫存檔的位置。檔案的名稱會另存為工作階段變數,以便在工作階段結束時一併刪除。

請注意,每當工作階段逾時,IIS 就會執行 Session_OnEnd 副程式。如果用戶端未在等候時間 (設定為工作階段開始後一分鐘) 內要求網頁,工作階段就會逾時。

其他注意事項

目前 ExportPicture 方法唯一可用的篩選器,是用於 GIF 影像。

ExportPicture 方法具有兩個引數,這兩個引數可以讓您指定所產生之圖表的維度 (以像素為單位)。在提供的範例程式碼中,寬度和高度兩個維度都是固定的。您可以改用用戶端所指定的維度。

OWC.Chart ProgID 會套用至 Office Web Components 9.0。如果您想要使用版本 10 的元件,請將 ProgID 從 OWC.Chart 變更為 OWC10.ChartSpace,或者如果要使用版本 11 的元件,則將 ProgID 從 OWC.Chart 變更為 OWC11.ChartSpace。

伺服器端的使用問題

請注意,Office 2000 Web 元件並非針對伺服器端的使用而設計,如果您在具有大量並行使用者連線的伺服器上使用這些元件,可能會遭遇問題。許多這些問題已在 Office XP Web 元件及 Office 2003 Web 元件中獲得解決,您應該考慮使用 Office XP Web 元件或 Office 2003 Web 元件做為大規模伺服器端解決方案。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
317316 Limitations of Office Web Components when used server-side

?考

《程式設計 Microsoft Office Web Components》(英文),作者:Dave Stearns ISBN:0-7356-0794-X

如需有關使用 Chart Web 元件的詳細資訊,請參閱下列「Microsoft 知識庫」文件:
240263 How To Create a Combination Chart with the Chart Web Component
235885 How To Use the Chart Web Component with Visual Basic
243192 HOWTO:Use VBScript to Bind a Chart to a Spreadsheet Component

屬性

文章編號: 244049 - 上次校閱: 2005年12月14日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft Office Web Components
  • Microsoft Office Web Components
  • Microsoft Office Chart Component 9.0
關鍵字:?
kbhowto kbofficewebchart KB244049
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com