文章編號: 315695 - 上次校閱: 2007年3月20日 - 版次: 4.5

HOW TO:將 Office Web 元件與利用 ASP.NET 而建立之 XML Web Service 所產生的 XML 資料搭配使用

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將逐步告訴您,如何使用 ASP.NET 建置簡易的 XML Web Service,以便在用戶端呼叫服務的方法時,從 Microsoft Access Northwind 範例資料庫擷取資料,並以 XML 格式將資料傳回給用戶端。在用戶端上,資料在顯示出來時會加上 Office 樞紐分析表和圖表元件。此外,本文還會示範如何使用 Visual Basic .NET 或 Visual Basic 6.0,為 XML Web Service 建置用戶端。

使用 ASP.NET 建立簡易的 XML Web Service


  1. 啟動 Visual Studio. NET。在 [檔案] 功能表上,按一下 [新增],然後按一下 [專案]。在 [專案類型] 下方,按一下 [Visual Basic 專案],然後按一下 [範本] 下的 [ASP.NET Web 服務]。根據預設會建立 Form1。
  2. [位置] 變更為 http://localhost/MyDataService,然後按一下 [確定]。XML Web Service 專案會以 MyDataService 這個名稱建立在本機電腦上。繼承自 System.Web.Services.WebServiceClass Service1,會依預設建立在 Service1.asmx 檔中。
  3. 在 [方案總管] 中,用滑鼠右鍵按一下 [Service1.asmx],然後選取 [檢視程式碼]。這樣會顯示 .asmx 頁面的程式碼後置檔案。
  4. 新增參考至 Microsoft ActiveX Data Objects 程式庫。如果要執行這項操作,請依照下列步驟執行:
    1. [專案] 功能表上,按一下 [加入參考]
    2. 按一下 [COM] 索引標籤,選取 [Microsoft ActiveX Data Objects 2.7 Library],再按 [選取],然後按一下 [確定]
  5. 將下列方法新增至 Class Service1
    <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
    					
    注意:如果您未將 Office XP 安裝到預設資料夾 (C:\Program Files\Microsoft Office),請修改程式碼中的連接字串,以反映 Office 安裝的正確路徑。此外,如果您已經安裝 Office 2003,則可能必須跟著變更路徑。

  6. [建置] 功能表上,按一下 [建置方案] 以建置 XML Web Service。

測試您的 XML Web Service

  1. [偵錯] 功能表上,按一下 [開始]。Microsoft Internet Explorer 會啟動並瀏覽至 Service1.asmx 檔案。
  2. 按一下 GetResultsAsAdoXML 超連結。
  3. 按一下 [叫用] 以測試方法呼叫。Category Sales for 1997 查詢的結果會以 XML 資料列集架構格式顯示在新視窗中。資料列集 XML 文件會包含在 string 元素中。
  4. 在 Visual Studio .NET 的 [偵錯] 功能表上,按一下 [停止偵錯]

為您的 XML Web Service 建置用戶端

本節將告訴您,如何建立用戶端以使用 MyDataService XML Web Service。您可以使用 Visual Basic 6.0 或 Visual Basic .NET 建立用戶端。

為了示範目的,下列步驟將告訴您,如何在同一部電腦上建置測試用戶端當做 XML Web Service。不過,您可以在任何能夠瀏覽至 Web 服務所顯露之 Web Services Description Language (WSDL) 檔案的電腦上,建置測試用戶端。


使用 Visual Basic .NET

  1. 建立新的 Visual Basic .NET Windows 應用程式專案。根據預設會建立 Form1。
  2. 按下 CTRL+ALT+X 以顯示 [工具箱]。
  3. [工具] 功能表上,按一下 [自訂工具箱]。在元件清單中選取下列項目,然後按一下 [確定]
    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Microsoft Office PivotTable 10.0
    元件的圖示會出現在工具箱中。

  4. 將 Chart 控制項、PivotTable 控制項及 Data Source 控制項新增至 Form1。請視需要調整表單與控制項的大小和位置。
  5. Button 控制項新增至 Form1,然後將控制項的 Text 屬性設定為 Fill Data
  6. 新增參考至範例 XML Web Service。如果要執行這項操作,請依照下列步驟執行:
    1. [專案] 功能表上,按一下 [加入 Web 參考][加入 Web 參考] 對話方塊隨即會出現。
    2. [位址] 文字方塊中,輸入 http://localhost/MyDataService/Service1.asmx?wsdl,然後按下 ENTER 鍵。WSDL 檔案會顯示在對話方塊中。

      注意:如果 MyDataService 不是位於本機電腦上,請以 MyDataService 所在的 Web 伺服器名稱取代位址中的 localhost
    3. 在對話方塊中,按一下 [加入參考]
  7. 按兩下 Form1 上的 Button 控制項,然後使用下列程式碼取代 Button1_Click 處理常式:
    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
    					
    注意:如果 XML Web Service 位於不同的電腦上,請宣告 objClient 變數,如下所示:
     Dim objClient As New <servername>.Service1() 
    其中 servername 是 XML Web Service 所在的伺服器名稱。
  8. 注意:如果您使用的是 Office 2003,則可能需要跟著變更參考。

  9. 將下列程式碼加入至 Form1.vb 頂端:
    Imports OWC10 = Microsoft.Office.Interop.OWC
    					
  10. [偵錯] 功能表上,按一下 [開始] 以建置並執行用戶端程式。Form1 隨即會出現。
  11. 按一下 [Fill Data],在 Chart 和 PivotTable 控制項中呈現資料。

使用 Visual Basic 6.0

XML Web Service 會使用「簡易物件存取通訊協定」(SOAP) 訊息與用戶端通訊。如果用戶端應用程式為 SOAP 感知的,用戶端應用程式就可以呼叫 XML Web Service 所顯露的方法。用戶端電腦不需要安裝 Visual Studio .NET,即可在 XML Web Service 上呼叫方法。用戶端應該能夠將 XML Web Service 方法呼叫建構成 SOAP 要求,並接收方法呼叫的結果做為 SOAP 回應。SOAP Toolkit 可以讓您執行這項操作。

如需有關 SOAP Toolkit 的詳細資訊 (包括下載指示),請參閱下列 Microsoft Developer Network (MSDN) 網站:
SOAP Toolkit 2.0 SP2
http://msdn2.microsoft.com/en-us/webservices/aa740662.aspx (http://msdn2.microsoft.com/en-us/webservices/aa740662.aspx)
如果要建立 Visual Basic 6.0 測試用戶端,以使用 MyDataService XML Web Service 中的方法,請依照下列步驟執行:

注意:這個測試用戶端要求電腦上必須安裝 SOAP Toolkit 2.0 Service Pack 2。
  1. 開啟 Visual Basic 6.0,並建立新的標準執行檔專案。根據預設會建立 Form1。
  2. [專案] 功能表上,按一下 [參考]。將下列參考新增至專案:
    • Microsoft Soap 型別程式庫
    • Microsoft XML, v3.0
  3. [專案] 功能表上,按一下 [元件]。選取 [Microsoft Office XP Web Components],然後按一下 [確定]
  4. 將下列 Office Web 元件新增至 Form1:
    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Microsoft Office PivotTable 10.0
  5. CommandButton 控制項新增至 Form1,然後將按鈕的 Caption 屬性設定為 Fill Data
  6. 按兩下 CommandButton 控制項,然後使用下列程式碼取代 Command1_Click 處理常式:
    Private Sub Command1_Click()
    Dim osoapClient As MSSOAPLib.SoapClient
    
    'Initialize the SOAP client object.
    Set osoapClient = CreateObject("MSSOAP.SoapClient")
    osoapClient.mssoapinit "http://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
    					
    注意:如果 XML Web Service 位於不同的電腦上,請以 XML Web Service 所在的伺服器名稱取代 XML Web Service 位址中的 localhost

  7. 按下 F5 以建置並執行程式。Form1 隨即會出現。
  8. 按一下 [Fill Data],在圖表和樞紐分析表元件中呈現資料。

?考

如需有關利用 ASP.NET 所建立之 XML Web Service 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
301273? (http://support.microsoft.com/kb/301273/ ) HOW TO:使用 Visual Basic .NET 撰寫簡單的 Web 服務
如需有關利用 ASP.NET 所建立之 XML Web Service 的詳細資訊,請參閱 Visual Studio .NET「說明」中的<使用 Web 服務設計 Web 程式>主題 (英文),或《Microsoft .NET Framework 開發人員指南》中的<ASP.NET Web 服務和 ASP.NET Web 服務用戶端>主題 (英文)。

如需有關 Web 服務基本概念,以及利用 ASP.NET 所建立之 XML Web Service 的詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/WebServicesAnchor.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/WebServicesAnchor.asp)
如需有關具有 Visual Studio 和 Office XP Web Components 之 Microsoft Office 開發的詳細資訊,請造訪下列 MSDN 網站:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_2003_ta/html/odc_ancVSTO_05.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_2003_ta/html/odc_ancVSTO_05.asp)
如需有關 Office XP Web Components 的詳細資訊,請按一下下面的文件編號以檢視「Microsoft 知識庫」中的文件:
286212? (http://support.microsoft.com/kb/286212/ ) HOWTO:Use an XML DataSource with the Office Chart Component
235542? (http://support.microsoft.com/kb/235542/ ) 如何將 PivotTable Office Web 元件與 VB 搭配使用

這篇文章中的資訊適用於:
  • Microsoft Office 2003 Web Components
  • Microsoft Office XP Web Components
  • Microsoft Web Services (included with the .NET Framework) 1.0
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft .NET Framework Class Libraries 1.0
關鍵字:?
kbhowtomaster kbofficewebchart kbofficewebpivot KB315695
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。