Artigo: 315695 - Última revisão: quinta-feira, 29 de Março de 2007 - Revisão: 5.4

Como utilizar os componentes Web do Office com dados XML gerados por um serviço Web XML criados utilizando o ASP.NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo passo a passo descreve como utilizar o ASP.NET para criar um serviço Web XML simples que obtém dados do Microsoft Access exemplo da base de dados Adamastor e devolve os dados como XML a um cliente quando o cliente chama um método do serviço. No lado do cliente, os dados são apresentados com os componentes de tabela dinâmica do Office e o gráfico. Este artigo também demonstra como criar um cliente para o serviço Web XML utilizando o Visual Basic .NET ou Visual Basic 6.0.

Criar um serviço Web XML simples utilizando o ASP.NET

  1. Inicie o Visual Studio. NET.
  2. No menu ficheiro , clique em Novo e em seguida, clique em projecto . Clique em tipos de projecto em Projectos do Visual Basic e clique em Serviço Web do ASP.NET em
  3. modelos . É criado o Form1 por predefinição.
  4. Alterar a localização para http://localhost/MyDataService e clique em OK . O projecto de serviço Web XML é criado no computador local com o nome MyDataService. Classe Service1 , que herda System.Web.Services.WebService , é criado por predefinição no ficheiro Service1.asmx.
  5. No Solution Explorer, clique com o botão direito do rato Service1.asmx e, em seguida, seleccione Ver código . Isto apresenta o ficheiro de código para a página .asmx.
  6. Adicione uma referência para o Microsoft ActiveX Data Objects biblioteca. Para o fazer, siga estes passos:
    1. No menu projecto , clique em Add Reference .
    2. Clique no separador COM , seleccione Microsoft ActiveX Data Objects 2.7 Library , clique em Seleccionar e, em seguida, clique em OK .
  7. Adicione o seguinte método à Classe 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
    					
    NOTA: se não instalou o Office XP para a pasta predefinida (C:\Program Files\Microsoft Office), modificar a cadeia de ligação no código para reflectir o caminho correcto para a instalação do Office. Além disso, se tiver instalado o Office 2003, poderá ter alterado o caminho.

  8. No menu criar , clique em Criar solução para criar XML Web service.

Testar O XML Web Service

  1. No menu Debug , clique em Iniciar . Microsoft Internet Explorer é iniciado e navega para o ficheiro Service1.asmx.
  2. Clique na hiperligação GetResultsAsAdoXML .
  3. Clique em Invoke para testar a chamada de método. Uma nova janela apresenta os resultados da consulta Vendas de categoria de 1997 no formato de esquema de conjunto de linhas de XML. O documento XML do conjunto de linhas é entre o elemento de cadeia .
  4. No menu Debug no Visual Studio. NET, clique em Parar de depuração .

Criar um cliente para O XML Web Service

Esta secção descreve como criar um cliente a consumir MyDataService XML Web service. É possível criar o cliente com o Visual Basic 6.0 ou Visual Basic. NET.

Para fins de demonstração, os passos descrevem como criar o cliente de teste no mesmo computador como XML Web service. No entanto, pode criar os clientes de teste em qualquer computador que pode navegar para o WSDL (Web Services Description Language) ficheiros que o Web expõe de serviço.


Utilizar o Visual Basic .NET

  1. Crie um novo projecto de aplicação do Visual Basic .NET Windows. É criado o Form1 por predefinição.
  2. Prima CTRL + ALT + X para apresentar a caixa de ferramentas.
  3. No menu Ferramentas , clique em Personalizar a caixa de ferramentas . Seleccione os seguintes itens na lista de componentes e, em seguida, clique em OK :
    • Gráfico do Microsoft Office 10.0
    • Controlo de origem de dados do Microsoft Office 10.0
    • Tabela dinâmica do Microsoft Office 10.0
    Ícones para os componentes aparecem na caixa de ferramentas.

  4. Adicionar um controlo de gráfico, um controlo de tabela dinâmica e uma data origem controlo ao Form1. Dimensione e posicione o formulário e controlos conforme necessário.
  5. Adicione um controlo de botão ao Form1 e, em seguida, defina a propriedade Text do controlo para Preencher dados .
  6. Adicione uma referência para o serviço XML Web de exemplo. Para o fazer, siga estes passos:
    1. No menu projecto , clique em ' Adicionar referência Web '. A caixa de diálogo Adicionar referência Web é apresentada.
    2. Na caixa de texto endereço , escreva http:// localhost /MyDataService/Service1.asmx?wsdl e prima ENTER. O ficheiro WSDL é apresentado na caixa de diálogo.

      Nota : se MyDataService não reside no computador local, substituir localhost no endereço com o nome da Web servidor no qual reside MyDataService.
    3. Na caixa de diálogo, clique em Add Reference .
  7. Faça duplo clique no controlo de botão no Form1 e substitua a rotina de tratamento de Button1_Click com o seguinte código:
    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
    					
    NOTA: se o serviço XML Web estiver num computador diferente, declarar a variável objClient da seguinte forma:
     Dim objClient As New <servername>.Service1() 
    em que servername é o nome do servidor onde reside o serviço Web XML.
  8. Nota Se estiver a utilizar o Office 2003, poderá ter de alterar as referências em conformidade.

  9. Adicione o seguinte código para a parte superior do Form1.VB:
    Imports OWC10 = Microsoft.Office.Interop.OWC
    					
  10. No menu Debug , clique em Iniciar para criar e executar o programa de cliente. É apresentado o Form1.
  11. Clique em Preencher dados para apresentar dados nos controlos do gráfico e de tabela dinâmica.

Utilizar o Visual Basic 6.0

XML Web services comunicam com clientes utilizando o objecto simples mensagens SOAP (Access Protocol). Se a aplicação cliente compatível com o SOAP, pode chamar os métodos expostos pelo serviço Web XML. Os computadores clientes não necessitam de ter Visual Studio .NET instalado para chamar métodos no serviço Web XML. O cliente deve têm capacidade para chamadas de método de serviço XML Web como pedidos SOAP de pacotes e receber os resultados de chamadas de método como SOAP respostas. O SOAP Toolkit permite-lhe efectuar este procedimento.

Para obter mais informações sobre SOAP Toolkit, incluindo instruções de transferência, consulte o seguinte Web site da Microsoft Developer Network (MSDN):
SOAP Toolkit
http://msdn2.microsoft.com/en-us/library/aa286526.aspx (http://msdn2.microsoft.com/en-us/library/aa286526.aspx)
Para criar um cliente de teste do Visual Basic 6.0 para consumir métodos MyDataService XML Web service, siga estes passos:

Nota Este cliente de teste requer que SOAP Toolkit 2.0 Service Pack 2 esteja instalado no computador.
  1. Inicie o Visual Basic 6.0 e crie um novo EXE padrão projecto. É criado o Form1 por predefinição.
  2. No menu projecto , clique em References . Adicione as seguintes referências ao projecto:
    • Biblioteca de tipos Microsoft SOAP
    • Microsoft XML, v3.0
  3. No menu projecto , clique em componentes . Seleccione Os componentes Web do Microsoft Office XP e, em seguida, clique em OK .
  4. Adicione os seguintes componentes Web do Office ao Form1:
    • Gráfico do Microsoft Office 10.0
    • Controlo de origem de dados do Microsoft Office 10.0
    • Tabela dinâmica do Microsoft Office 10.0
  5. Adicione um controlo CommandButton ao Form1 e defina a propriedade legenda do botão para Preencher dados .
  6. Faça duplo clique no controlo CommandButton e substitua a rotina de tratamento de Command1_Click o seguinte código:
    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
    					
    NOTA: se o serviço XML Web reside num computador diferente, substituir localhost no endereço de serviço Web XML com o nome do servidor onde reside o serviço Web XML.

  7. Prima F5 para compilar e executar o programa. É apresentado o Form1.
  8. Clique em Preencher dados para apresentar dados dos componentes gráfico e de tabela dinâmica.

Referências

Para obter mais informações sobre serviços Web XML que são criados utilizando o ASP.NET, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
301273  (http://support.microsoft.com/kb/301273/ ) Como escrever um serviço Web simples utilizando o Visual Basic .NET
Para obter mais informações sobre XML Web services criados utilizando ASP.NET, consulte o tópico "Programação na Web com serviços para a Web" a ajuda do Visual Studio .NET ou o tópico "ASP.NET Web e o ASP.NET Web Service clientes de serviços" no guia-o Microsoft .NET Framework Developer.

Para obter informações adicionais sobre princípios básicos de serviço Web e XML Web services criados utilizando ASP.NET, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ba0z6a33.aspx (http://msdn2.microsoft.com/en-us/library/ba0z6a33.aspx)
Para obter informações adicionais sobre o desenvolvimento do Microsoft Office com o Visual Studio e componentes Web do Office XP, visite o seguinte Web site da MSDN:
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)
Para obter mais informações sobre componentes Web do Office XP, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
286212  (http://support.microsoft.com/kb/286212/ ) Como utilizar uma origem de dados XML com o componente de gráfico do Office
235542  (http://support.microsoft.com/kb/235542/ ) Como utilizar o componente Web do Office de tabela dinâmica com VB

A informação contida neste artigo aplica-se a:
  • 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
  • Bibliotecas de classe do Microsoft .NET Framework 1.0
Palavras-chave: 
kbmt kbhowtomaster kbofficewebchart kbofficewebpivot KB315695 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 315695  (http://support.microsoft.com/kb/315695/en-us/ )