Het gebruik van Server-Side dynamisch genereren van grafieken uitzetten


Samenvatting


Microsoft Office grafiek Web Component gebruiken als een Component Object Model (COM)-besturingselement op een formulier is ondergebracht, is het mogelijk de webcomponent Chart gebruiken als een object niet zichtbaar, in het geheugen. In dit artikel ziet u hoe u kunt de webcomponent Chart op een server voor het maken van een grafiek weergegeven als een afbeelding van de indeling GIF (Graphics Interchange). U kunt de besproken in dit artikel voor het genereren van grafiekafbeeldingen die kunnen worden gebruikt via het Internet of in ondernemingen met bureaubladen van clientcomputers heterogene strategie implementeren.

Meer informatie


U kunt diagrammen met gegevens uit verschillende bronnen, zoals arrays, een databases, werkbladen of aangepaste gegevensbronnen maken met de webcomponent Chart. Als u een grafiek maakt, kunt u de methode ExportPicture van het grafiekonderdeel voor het genereren van een GIF-afbeelding van de grafiek.

U kunt het bestand global.asa te wijzigen en een ASP-pagina maken met de code geïllustreerd in de volgende stappen uit om dit te bereiken.

Stappen om Project te maken

  1. Start Microsoft Visual InterDev.
  2. Maak een nieuw Web Project genoemd
    ServerChart en klik op volgende .
  3. Typ op de server die moet worden gebruikt voor dit Project Web.
  4. Klik op Voltooien om de Web-Project te maken.
  5. Klik met de rechtermuisknop op de projectmap op de server (dit is meestal C:\Inetpub\wwwroot\ServerChart), selecteer Eigenschappen en klik vervolgens op het tabblad beveiliging .
  6. Klik op machtigingenen de volgende machtigingen toe:
    IUSR_SERVERNAME: Lezen, schrijven, uitvoeren en verwijderen
    Auteur: Lezen, schrijven, uitvoeren en verwijderen
  7. Klik op OK om de machtigingen instellen.
  8. In het Visual InterDev-project met de rechtermuisknop op het bestand global.asa en selecteer Ophalen werken kopiëren.
  9. Wijzig het bestand global.asa bevat het volgende script:
    <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. Klik in het menu Project en selecteer Active Server Page Web Item toevoegenselecteert. Naam van de pagina chart.asp.
  11. Wijzig het script in chart.asp met de volgende gegevens bevatten:
    <%@ 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. Het project opslaan.
  13. Chart.asp in de Project Explorer met de rechtermuisknop en selecteer weergave in de browser.
De pagina wordt weergegeven met een grafiek met CPU-gebruik voor verschillende computers. Door verschillende organisaties, kunt u verschillende gebruik weergeven.

Als u meerdere grafieken op basis van verschillende sets gegevens maakt, moet elke grafiek als een unieke GIF-bestand worden opgeslagen. Van de bibliotheek Scripting Runtime FileSystemObject genereert in dit voorbeeld wordt een tijdelijk bestand voor de GIF-afbeelding. Het bestand in dezelfde map als de ASP-pagina geplaatst zodat u de MapPath-methode van het object Session gebruiken kunt om de locatie van het tijdelijke bestand. De bestandsnaam wordt opgeslagen als een sessievariabele, zodat deze wordt verwijderd wanneer de sessie wordt beëindigd.

Houd er rekening mee dat de subroutine Session_OnEnd in IIS wordt uitgevoerd telkens wanneer de sessie is verlopen. Time-out optreedt als de client niet om heeft verzocht een pagina binnen de time-duur, die is ingesteld op één (1) minuut aan het begin van de sessie.

Aanvullende opmerkingen

Momenteel is het alleen beschikbaar voor de methode ExportPicture filter voor afbeeldingen "GIF".

De methode ExportPicture heeft twee argumenten waarmee u de afmetingen in pixels van de grafiek gegenereerd. In de voorbeeldcode, zijn de afmetingen voor breedte en hoogte hardcoded. In plaats daarvan kunt u de dimensies waarmee de client.

De OWC. Grafiek ProgID geldt voor Office Web Components 9.0. Als u gebruik wilt maken van components versie 10, wijzigt u de ProgID van OWC. Grafiek met OWC10. ChartSpace- of als u wilt gebruiken versie 11 van de onderdelen, wijzigt de ProgID van OWC. Grafiek met OWC11. ChartSpace.

Problemen met het gebruik van Server-Side

U moet er rekening mee houden dat Office 2000 Web Components zijn niet bedoeld voor gebruik door de server en problemen optreden kunnen als u de componenten op een server met een groot aantal gelijktijdige verbindingen. Veel van dit probleem zijn opgelost in Office XP Web Components en Office 2003 Web Components en overweeg het gebruik van de Office XP Web Components of Office 2003 Web Components voor grootschalige server-side-oplossingen.


Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
317316 INFO: beperkingen van Office 2000 Web Components wanneer aan de serverzijde gebruikt

Referenties


Programmeren van Microsoft Office Web Components van Dave Stearns, ISBN: 0-7356-0794-X

Zie het volgende Knowledge Base-artikelen voor meer informatie over het gebruik van de webcomponent Chart:
240263 het maken van een combinatiediagram met de webcomponent Chart
235885 het gebruik van het Office-onderdeel grafiek Web met VB
243192 het gebruik van VBScript een grafiek koppelen aan een werkbladonderdeel.