您目前已離線,請等候您的網際網路重新連線

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

結論
除了將 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 = 1End SubSub 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	NextEnd 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 valuenData = Request.QueryString("sOrg")'When the page loads the first time, set ndata to 5if len(nData) = 0 then nData = 5' Generate random categories and values for the chart' These values can come from some existing data sourcefor i = 1 to 5	Categories(i) = "Machine" & CStr(i)	Vals(i) = nData * Rnd(100)next' Create a Chart ObjectSet oChart = CreateObject("OWC.Chart")Set c = oChart.Constants' Set the different parameters for the ChartSpaceoChart.Border.Color = c.chColorNone' Get Organization number and use it to set the CaptionnOrg = nData/5sCaption = "Current Utilizations for Org"sCaption = sCaption & CStr(nOrg)' Add a chart and set parameters for the chartoChart.Charts.AddoChart.Charts(0).Type = oChart.Constants.chChartTypeColumnClusteredoChart.Charts(0).SeriesCollection.AddoChart.Charts(0).SeriesCollection(0).Caption = sCaptionoChart.Charts(0).SeriesCollection(0).SetData c.chDimCategories, c.chDataLiteral, CategoriesoChart.Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, ValsoChart.Charts(0).HasLegend = TrueoChart.Charts(0).HasTitle = True' Get a temporary filename to save chart in that filesFname = Session("FSO").GetTempName & session.SessionID & ".gif"' Export the chart to the temporary fileoChart.ExportPicture server.MapPath(sFname), "gif", 600, 512' Create a link to the generated fileResponse.Write "<img src='" & sFname & "'>"' Store the file with its path in the session object for cleanupSession("sTempFile" & Session("n")) = Server.MapPath(sFname)' Increment the number of filesSession("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
owc realtime
內容

文章識別碼:244049 - 最後檢閱時間:12/14/2005 09:02:00 - 修訂: 3.3

Microsoft Office Web Components, Microsoft Office Web Components, Microsoft Office Chart Component 9.0

  • kbhowto kbofficewebchart KB244049
意見反應
t" src="https://c.microsoft.com/ms.js">