Freigeben über


Verwenden der Office Web Components mit XML-Daten, die von einem MIT ASP.NET erstellten XML-Webdienst generiert wurden

Zusammenfassung

In diesem Schritt-für-Schritt-Artikel wird beschrieben, wie Sie mithilfe von ASP.NET einen einfachen XML-Webdienst erstellen, der Daten aus der Northwind-Beispieldatenbank von Microsoft Access abruft und die Daten als XML an einen Client zurückgibt, wenn der Client eine Methode des Diensts aufruft. Auf der Clientseite werden die Daten mit den Office-PivotTable- und -Diagrammkomponenten angezeigt. In diesem Artikel wird auch das Erstellen eines Clients für den XML-Webdienst mithilfe von Visual Basic .NET oder Visual Basic 6.0 veranschaulicht.

Erstellen eines einfachen XML-Webdiensts mithilfe von ASP.NET

  1. Starten Sie Visual Studio. Netto.

  2. Klicken Sie im Menü "Datei " auf "Neu " und dann auf " Projekt". Klicken Sie unter "Projekttypen" auf "Visual Basic-Projekte", und klicken Sie dann unter "Webdienst" auf ASP.NET

  3. ****Vorlagen. Form1 wird standardmäßig erstellt.

  4. Ändern Sie den Speicherort , https://localhost/MyDataService und klicken Sie auf "OK". Das XML-Webdienstprojekt wird auf dem lokalen Computer mit dem Namen MyDataService erstellt. Der Klassendienst1, der von "System.Web.Services.WebService" erbt, wird standardmäßig in der Datei "Service1.asmx" erstellt.

  5. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf "Service1.asmx", und wählen Sie dann "Code anzeigen" aus. Dadurch wird die CodeBehind-Datei für die ASMX-Seite angezeigt.

  6. Fügen Sie einen Verweis auf die Microsoft ActiveX-Datenobjektbibliothek hinzu. Gehen Sie dazu wie folgt vor:

    1. On the Project menu, click Add Reference.
    2. Klicken Sie auf die Registerkarte "COM ", wählen Sie " Microsoft ActiveX Data Objects 2.7 Library" aus, klicken Sie auf "Auswählen" und dann auf "OK".
  7. Fügen Sie die folgende Methode zu Class Service1 hinzu:

    <WebMethod()> Public Function GetResultsAsAdoXML() As String
        Dim myAdoRs As ADODB.Recordset
        Dim myAdoConnection As New ADODB.Connection()
        Dim mypersiststream As New ADODB.Stream()
    
    Dim myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
           "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
        Dim mySelect As String = "SELECT * from [Category Sales for 1997]"
    
    myAdoConnection.ConnectionString = myConnectionString
        myAdoConnection.Open()
        myAdoRs = myAdoConnection.Execute(mySelect)
        myAdoRs.Save(mypersiststream, ADODB.PersistFormatEnum.adPersistXML)
        Return mypersiststream.ReadText
    End Function
    

    Hinweis

    Wenn Sie Office XP nicht im Standardordner (C:\Programme\Microsoft Office) installiert haben, ändern Sie die Verbindungszeichenfolge im Code, um den richtigen Pfad für Ihre Office-Installation widerzuspiegeln. Wenn Sie Office 2003 installiert haben, müssen Sie den Pfad möglicherweise entsprechend ändern.

  8. Klicken Sie im Menü "Erstellen " auf " Projektmappe erstellen ", um den XML-Webdienst zu erstellen.

Testen des XML-Webdiensts

  1. Klicken Sie im Menü "Debuggen " auf "Start". Microsoft Internet Explorer startet und navigiert zur Datei "Service1.asmx".
  2. Klicken Sie auf den GetResultsAsAdoXML-Link .
  3. Klicken Sie auf Aufrufen , um den Methodenaufruf zu testen. In einem neuen Fenster werden die Ergebnisse der Abfrage "Kategorieumsätze für 1997" im XML-Rowsetschemaformat angezeigt. Das Rowset-XML-Dokument ist in das Zeichenfolgenelement eingeschlossen.
  4. Klicken Sie im Menü "Debuggen " in Visual Studio .NET auf "Debuggen beenden".

Erstellen eines Clients für Ihren XML-Webdienst

In diesem Abschnitt wird beschrieben, wie Sie einen Client für die Nutzung des MyDataService XML-Webdiensts erstellen. Sie können Ihren Client entweder mit Visual Basic 6.0 oder Visual Basic .NET erstellen.

Zu Demonstrationszwecken wird in den Schritten beschrieben, wie der Testclient auf demselben Computer wie der XML-Webdienst erstellt wird. Sie können Ihre Testclients jedoch auf jedem Computer erstellen, der zur WSDL-Datei (Web Services Description Language) navigieren kann, die der Webdienst verfügbar macht.

Verwenden von Visual Basic .NET

  1. Erstellen Sie ein neues Visual Basic .NET Windows Application-Projekt. Form1 wird standardmäßig erstellt.

  2. Drücken Sie STRG+ALT+X, um die Toolbox anzuzeigen.

  3. Klicken Sie im Menü "Extras" auf "Toolbox anpassen". Wählen Sie die folgenden Elemente in der Komponentenliste aus, und klicken Sie dann auf "OK":

    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Microsoft Office PivotTable 10.0
      Symbole für die Komponenten werden in der Toolbox angezeigt.
  4. Fügen Sie formular1 ein Diagrammsteuerelement, ein PivotTable-Steuerelement und ein Datenquellensteuerelement hinzu. Größe und Position des Formulars und der Steuerelemente nach Bedarf.

  5. Fügen Sie formular1 ein Schaltflächensteuerelement hinzu, und legen Sie dann die Text-Eigenschaft des Steuerelements auf "Daten ausfüllen" fest.

  6. Fügen Sie einen Verweis auf den XML-Beispielwebdienst hinzu. Gehen Sie dazu wie folgt vor:

    1. Klicken Sie im Menü Projekt auf Webverweis hinzufügen. Das Dialogfeld " Webreferenz hinzufügen " wird angezeigt.
    2. Geben Sie im Textfeld " Adresse " http:// localhost/MyDataService/Service1.asmx?wsdl ein, und drücken Sie die EINGABETASTE. Die WSDL-Datei wird im Dialogfeld angezeigt.

    Hinweis: Wenn Sich MyDataService nicht auf dem lokalen Computer befindet, ersetzen Sie localhost in der Adresse durch den Namen des Webservers, auf dem sich MyDataService befindet.
    3. Klicken Sie im Dialogfeld auf "Verweis hinzufügen".

  7. Doppelklicken Sie auf das Schaltflächen-Steuerelement in Form1, und ersetzen Sie dann den Button1_Click-Handler durch den folgenden Code:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    'Reference to the service.
        Dim objClient As New localhost.Service1()
    
    'Result obtained from the Service method.
        Dim strresult As String
    
    'The results will be stored on this disk file.
        Dim datafile As String
    
    datafile = System.IO.Directory.GetCurrentDirectory() + "\\mydata.xml"
    
    'Call the Web service method GetResultsAsAdoXML, which returns the recordset as XML.
        strresult = objClient.GetResultsAsAdoXML()
    
    Dim oxmldoc As New System.Xml.XmlDocument()
    
    'Load the XML recordset into the XML Document object.
        oxmldoc.LoadXml (strresult)
    
    'Save it to disk file.
        oxmldoc.Save (datafile)
    
    'Get data in the DataSource component.
        If Len(AxDataSourceControl1.ConnectionString) = 0 Then
            AxDataSourceControl1.ConnectionString = "provider=mspersist"
            AxDataSourceControl1.RecordsetDefs.AddNew( _
                  datafile, AxDataSourceControl1.Constants.dscCommandFile, "ChartData")
        End If
    
    'Get data in Chart component.
        Dim c
        Dim cht As OWC10.ChChart
        Dim ser As OWC10.ChSeries
        Dim ax As OWC10.ChAxis
    
    c = AxChartSpace1.Constants
        ' Clear the ChartSpace.
        AxChartSpace1.Clear()
    
    'DataSource to the Chart component.
        AxChartSpace1.DataSource = AxDataSourceControl1.DefaultRecordset.DataSource
    
    'Get the reference to Chart within the ChartSpace component.
        cht = AxChartSpace1.Charts(0)
        cht.Type = c.chChartTypeBarStacked
        cht.HasLegend = True
        cht.Legend.Position = c.chLegendPositionTop
        cht.HasTitle = True
        cht.Title.Caption = "Category Sales for 1997"
    
    'Set the Chart data.
        AxChartSpace1.SetData(OWC10.ChartDimensionsEnum.chDimCategories, 0, "CategoryName")
        AxChartSpace1.SetData(OWC10.ChartDimensionsEnum.chDimValues, 0, "CategorySales")
    
    ax = cht.Axes(c.chAxisPositionBottom)
    
    'Set the series attributes.
        ser = cht.SeriesCollection(0)
        ser.Name = "Category Sales"
        ser.Caption = ser.Name
        ser.Marker.Size = 4
    
    'Get Data in the PivotTable component.
        Dim pview As OWC10.PivotView
        AxPivotTable1.AutoFit = True
        AxPivotTable1.ConnectionString = "provider=mspersist"
        AxPivotTable1.CommandText = datafile
        pview = AxPivotTable1.ActiveView
        pview.AutoLayout()
        pview.FilterAxis.Label.Visible = False
        pview.RowAxis.Label.Visible = False
        pview.ColumnAxis.Label.Visible = False
        pview.TitleBar.Visible = False
    
    End Sub
    
    

    Hinweis Wenn sich der XML-Webdienst auf einem separaten Computer befindet, deklarieren Sie die ObjClient-Variable wie folgt:

     Dim objClient As New <servername>.Service1()
    

    Dabei ist "Servername " der Name des Servers, auf dem sich der XML-Webdienst befindet.

  8. Hinweis: Wenn Sie Office 2003 verwenden, müssen Sie die Verweise möglicherweise entsprechend ändern.

  9. Fügen Sie oben in Form1.vb den folgenden Code hinzu:

    Imports OWC10 = Microsoft.Office.Interop.OWC
    
    
  10. Klicken Sie im Menü "Debuggen " auf " Start ", um das Clientprogramm zu erstellen und auszuführen. Form1 wird angezeigt.

  11. Klicken Sie auf "Daten ausfüllen ", um Daten in den Diagramm- und PivotTable-Steuerelementen darzustellen.

Verwenden von Visual Basic 6.0

XML-Webdienste kommunizieren mit Clients mithilfe von SOAP-Nachrichten (Simple Object Access Protocol). Wenn die Clientanwendung SOAP-fähig ist, kann sie die Methoden aufrufen, die vom XML-Webdienst verfügbar gemacht werden. Auf den Clientcomputern muss Visual Studio .NET nicht installiert sein, um Methoden für den XML-Webdienst aufzurufen. Der Client sollte die Möglichkeit haben, XML-Webdienstmethodenaufrufe als SOAP-Anforderungen einzurahmen und die Ergebnisse der Methodenaufrufe als SOAP-Antworten zu empfangen. Mit dem SOAP-Toolkit können Sie dies tun.

Weitere Informationen zum SOAP-Toolkit, einschließlich Downloadanweisungen, finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website: SOAP Toolkit

Führen Sie die folgenden Schritte aus, um einen Visual Basic 6.0-Testclient zum Verwenden von Methoden im MyDataService XML-Webdienst zu erstellen:

Hinweis

Für diesen Testclient muss SOAP Toolkit 2.0 Service Pack 2 auf dem Computer installiert sein.

  1. Starten Sie Visual Basic 6.0, und erstellen Sie ein neues Standard EXE-Projekt. Form1 wird standardmäßig erstellt.

  2. Klicken Sie im Menü "Projekt " auf "Verweise". Fügen Sie dem Projekt die folgenden Verweise hinzu:

    • Microsoft SOAP-Typbibliothek
    • Microsoft XML, v3.0
  3. Klicken Sie im Menü "Projekt " auf "Komponenten". Wählen Sie Microsoft Office XP-Webkomponenten aus, und klicken Sie dann auf "OK".

  4. Fügen Sie formular1 die folgenden Office Web Components hinzu:

    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Microsoft Office PivotTable 10.0
  5. Fügen Sie form1 ein CommandButton-Steuerelement hinzu, und legen Sie die Caption-Eigenschaft der Schaltfläche auf "Daten ausfüllen" fest.

  6. Doppelklicken Sie auf das CommandButton-Steuerelement, und ersetzen Sie den Command1_Click-Handler durch den folgenden Code:

    Private Sub Command1_Click()
      Dim osoapClient As MSSOAPLib.SoapClient
    
    'Initialize the SOAP client object.
      Set osoapClient = CreateObject("MSSOAP.SoapClient")
      osoapClient.mssoapinit "https://localhost/MyDataService/Service1.asmx?wsdl", "Service1", "Service1Soap"
    
    'DOM object to load the results.
      Dim oXMLDoc As New MSXML2.DOMDocument
      Dim strdirname As String
    
    'File to store XML recordset.
      strdirname = FileSystem.CurDir$ + "\mydata.xml"
    
    Dim strxmlrecordset As String
    
    'Call the WebService method.
      strxmlrecordset = osoapClient.GetResultsAsAdoXML()
    
    'Load the XML in the DOM document.
      oXMLDoc.loadXML strxmlrecordset
    
    'Save it to the disk file.
      oXMLDoc.Save (strdirname)
    
    'Get the data into the DataSourceControl1 component.
      If Len(DataSourceControl1.ConnectionString) = 0 Then
         DataSourceControl1.ConnectionString = "provider=mspersist"
         ' Add a RecordsetDef with name ChartData to the DataSourceControl1
         DataSourceControl1.RecordsetDefs.AddNew strdirname, DataSourceControl1.Constants.dscCommandFile, "ChartData"
      End If
    
    'Get the Data into the Chart component.
      Dim c
      Dim cht As ChChart
      Dim chart1 As ChChart
      Dim ser As ChSeries
      Dim ax As ChAxis
    
    Set c = ChartSpace1.Constants
      ChartSpace1.Clear
    
    'DataSource to the Chart component.
      ChartSpace1.DataSource = DataSourceControl1.DefaultRecordset.DataSource
    
    ' Draw the chart.
      Set cht = ChartSpace1.Charts(0)
      cht.Type = c.chChartTypeBarStacked
      cht.HasLegend = True
      cht.Legend.Position = c.chLegendPositionTop
      cht.HasTitle = True
      cht.Title.Caption = "Category Sales for 1997"
    
    'Set the chart data.
      ChartSpace1.SetData chDimCategories, 0, "CategoryName"
      ChartSpace1.SetData chDimValues, 0, "CategorySales"
    
    ' Set the tick label spacing depending on the number of points plotted.
      Set ax = cht.Axes(c.chAxisPositionBottom)
    
    'Set the series attributes.
      Set ser = cht.SeriesCollection(0)
      ser.Name = "Category Sales"
      ser.Caption = ser.Name
      ser.Marker.Size = 4
    
    'Get the data into the PivotTable.
      PivotTable1.ConnectionString = "provider=mspersist"
      PivotTable1.CommandText = strdirname
      PivotTable1.AutoFit = True
      Set pview = PivotTable1.ActiveView
      pview.AutoLayout
      pview.FilterAxis.Label.Visible = False
      pview.RowAxis.Label.Visible = False
      pview.ColumnAxis.Label.Visible = False
      pview.TitleBar.Visible = False
    End Sub
    
    

    Hinweis Wenn sich der XML-Webdienst auf einem separaten Computer befindet, ersetzen Sie "localhost " in der XML-Webdienstadresse durch den Namen des Servers, auf dem sich der XML-Webdienst befindet.

  7. Drücken Sie F5, um das Programm zu erstellen und auszuführen. Form1 wird angezeigt.

  8. Klicken Sie auf "Daten ausfüllen ", um Daten in den Diagramm- und PivotTable-Komponenten darzustellen.

References

Weitere Informationen zu XML-Webdiensten, die mithilfe von ASP.NET erstellt werden, finden Sie in der Microsoft Knowledge Base:

301273 Schreiben eines einfachen Webdiensts mithilfe von Visual Basic .NET

Weitere Informationen zu XML-Webdiensten, die mithilfe von ASP.NET erstellt werden, finden Sie im Thema "Programmieren des Webs mit Webdiensten" in der Visual Studio .NET-Hilfe oder im Thema "ASP.NET Webdienste und ASP.NET Webdienstclients" im Microsoft .NET Framework Entwicklerhandbuch.

Weitere Informationen zu Webdienst-Grundlagen und XML-Webdiensten, die mithilfe von ASP.NET erstellt werden, finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:

https://msdn.microsoft.com/en-us/library/ba0z6a33.aspx

Weitere Informationen zur Microsoft Office-Entwicklung mit Visual Studio und Office XP-Webkomponenten finden Sie auf der folgenden MSDN-Website:

https://msdn.microsoft.com/en-us/library/aa188489(office.10).aspx