Hur du använder Server-Side-diagram om du vill generera diagram dynamiskt


Sammanfattning


Förutom att använda Microsoft Office Chart Web Component som en Component Object Model (COM)-kontroll på ett formulär, är det möjligt att använda diagramwebbkomponenten som ett objekt som inte syns, i minnet. Den här artikeln beskrivs hur du kan använda diagramwebbkomponenten på en server för att skapa ett diagram representeras som en bild för Graphics Interchange Format (GIF). Du kan implementera strategi som beskrivs i denna artikel för att generera diagram bilder som kan användas på Internet eller i företag med heterogena klientdatorer.

Mer Information


Med Web diagramkomponenten kan du skapa diagram med data från olika källor, till exempel arrayer, en databaser, kalkylblad eller anpassade datakällor. När du skapar ett diagram kan använda du metoden ExportPicture för diagramkomponenten för att generera en GIF-bild av diagrammet.

Du kan ändra filen global.asa och skapa en ASP-sida med koden som illustreras i följande steg för att åstadkomma detta.

Steg för att skapa projekt

  1. Starta Microsoft Visual InterDev.
  2. Skapa ett nytt webbprojekt som kallas
    ServerChart och klicka på Nästa .
  3. Ange den server som ska användas för det här webbprojektet.
  4. Klicka på Slutför om du vill skapa webbprojektet.
  5. Högerklicka på projektkatalogen på servern (detta är vanligtvis C:\Inetpub\wwwroot\ServerChart), Välj Egenskaper och klicka sedan på fliken säkerhet .
  6. Klicka på behörigheteroch lägga till följande katalogbehörigheter:
    IUSR_SERVERNAME: Läsa, skriva, köra och ta bort
    Skapare: Läsa, skriva, köra och ta bort
  7. Klicka på OK om du vill ange behörighet.
  8. Högerklicka på filen global.asa och välj Hämta arbetar kopierai Visual InterDev-projektet.
  9. Ändra global.asa-filen ska innehålla följande skript:
    <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. Klicka på projekt -menyn och välj Lägg till objekt för webbenväljer Active Server-sidan. Namnet på sidan chart.asp.
  11. Ändra skriptet i chart.asp ska innehålla följande:
    <%@ 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. Spara projektet.
  13. Högerklicka på chart.asp i Project Explorer och välj Visa i webbläsaren.
Sidan visas i ett diagram och som innehåller CPU-utilizations för olika datorer. Du kan visa olika utilizations genom att välja olika organisationer.

När du skapar flera diagram som baseras på olika datamängder måste varje diagram sparas som en unik GIF-fil. I det här exemplet skapas Scripting Runtime-biblioteket FileSystemObject en temporär fil för GIF-bilden. Filen är placerad i samma mapp som ASP-sidan så att du kan använda metoden MapPath i Session-objektet för att få plats på den temporära filen. Filnamnet sparas som en sessionsvariabel så att den tas bort när sessionen avslutas.

Observera att IIS körs Session_OnEnd subrutin när tidsgränsen har nåtts för sessionen. Sessionen avslutas om klienten inte har begärt en sida inom timeout-varaktighet, som ställs till en (1) minut i början av sessionen.

Ytterligare anmärkningar

För närvarande är det enda filtret som är tillgängliga för metoden ExportPicture för ”GIF-” bilder.

Metoden ExportPicture har två argument som gör det möjligt att ange dimensioner i bildpunkter genererade diagram. I exempelkoden, är mått för bredd och höjd hårdkodade. Du kan i stället använda dimensioner som klienten anger.

Office Web Components. ProgID diagram gäller för Office Web Components 9.0. Om du vill använda version 10 av komponenter, ändra ProgID från OWC. Diagram för OWC10. Diagramområdet eller om du vill använda version 11 komponenter, ändra ProgID från OWC. Diagram för OWC11. Diagramområdet.

Problem med servern

Du bör vara medveten om att Office 2000 Web Components inte har utformats för användning med servern och det kan uppstå problem om du använder komponenterna på en server med ett stort antal samtidiga användaranslutningar. Många av dessa problem har åtgärdats i Office XP Web Components och Office 2003 Web Components och du bör använda Office XP Web Components eller Office 2003 Web Components för stora serverlösningar.


För ytterligare information klickar du på artikelnumret nedan och läser artikeln i Microsoft Knowledge Base:
317316 INFO: begränsningar av Office 2000 Web Components när används för serversidan

Referenser


Programmering av Microsoft Office Web Components av Dave Stearns-ISBN: 0-7356-0794-X

Mer information om hur du använder diagramwebbkomponenten finns i följande Knowledge Base-artiklar:
240263 hur du skapar ett kombinationsdiagram med diagramwebbkomponenten
235885 hur du använder diagramkomponenten i Office Web med VB
243192 hur du använder VBScript binda ett diagram till en kalkylbladskomponent