Como a: Criar um UDF que chama um serviço da Web
Este exemplo mostra como chamar um externo serviço da Web de um user-defined function (UDF). O serviço da Web usados nesse exemplo é:
http://webservices.imacination.com/distance/Distance.jws?wsdl
Você deve usar um semelhante ferramenta de desenvolvimento 2.0\endash Compatible Microsoft.NET Framework ou Microsoft Visual Studio 2005 para criar este exemplo.
Dica
Antes testes de codificar, certifique-se de que a serviço da Web você esteja chamado está disponível.O servidor serviço da Web pode estar inoperante ou o serviço da Web descontinuado.Se for o serviço da Web não disponível, as chamadas feitas a serviço da Web de seu codificar falhará.
Você pode verificar se é um serviço da Web disponível visitando seu site.Este exemplo, o URL é:
http://webservices.imacination.com/distance/Distance.jws?wsdl
Se o serviço da Web está disponível, você poderá ver a WSDL (Web Services Description Language) (WSDL).Se não estiver disponível, você irá get o erro comum "página da Web não encontrado".
Exemplo
Você pode saber mais sobre o serviço da Web usados nesse exemplo examinando sua WSDL.
Ele fornece um serviço é retornar coordenadas geográficas em decimal forma. Neste exemplo, a ToDegreeNotation
ToDegreeNotation função foi adicionado à apresentação como você pode converter coordenadas para degrees/minutes/seconds, que é mais apropriado para a exibição coordenadas.
[UdfMethod]
public string ToDegreeNotation(double angle)
{
int deg = (int)angle;
double minutesAndSeconds = Math.Abs(angle - deg) * 60;
int minutes = (int)minutesAndSeconds;
int seconds = (int)(Math.Abs(minutesAndSeconds - minutes) * 60);
return deg.ToString() + "°" + minutes.ToString() + "\'" +
seconds.ToString() + "\"";
}
Se sua configuração Explorer Internet LAN estiver configurada para usar um servidor proxy, seu codificar deve explicitamente tornar um chamar definir a servidor proxy. Caso contrário, as chamadas serviço da Web falhará. Você pode definir a servidor proxy no construtor da seguinte maneira:
namespace ZipCodeUdfSample
{
[UdfClass]
public class ZipCodeUdfs
{
DistanceService distanceService = null;
public ZipCodeUdfs()
{
this.distanceService = new DistanceService();
this.distanceService.Proxy =
new WebProxy("http://myproxy:80", true);
}
Para obter mais informações sobre como testar e chamar UDFs das células, consulte Walkthrough: desenvolvendo um gerenciado-código UDF.
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using Microsoft.Office.Excel.Server.Udf;
using ZipCodes.com.imacination.webservices;
namespace ZipCodeUdfSample
{
[UdfClass]
public class ZipCodeUdfs
{
DistanceService distanceService = null;
public ZipCodeUdfs()
{
this.distanceService = new DistanceService();
//this.distanceService.Proxy = new WebProxy("http://myproxy:80", true);
}
[UdfMethod]
public double GetDistanceBetweenTwoZipCodes(int zip1, int zip2)
{
string zip1String = Convert.ToString(zip1);
string zip2String = Convert.ToString(zip2);
return (distanceService.getDistance(zip1String, zip2String));
}
[UdfMethod]
public string GetCityFromZip(int zip)
{
string zipString = Convert.ToString(zip);
return (distanceService.getCity(zipString));
}
[UdfMethod]
public string GetStateFromZip(int zip)
{
string zipString = Convert.ToString(zip);
return (distanceService.getState(zipString));
}
[UdfMethod]
public string GetLocationFromZip(int zip)
{
string zipString = Convert.ToString(zip);
return (distanceService.getLocation(zipString));
}
[UdfMethod]
public double GetLatitudeFromZip(int zip)
{
string zipString = Convert.ToString(zip);
return (distanceService.getLatitude(zipString));
}
[UdfMethod]
public double GetLongitudeFromZip(int zip)
{
string zipString = Convert.ToString(zip);
return (distanceService.getLongitude(zipString));
}
[UdfMethod]
public string ToDegreeNotation(double angle)
{
int deg = (int)angle;
double minutesAndSeconds = Math.Abs(angle - deg) * 60;
int minutes = (int)minutesAndSeconds;
int seconds = (int)(Math.Abs(minutesAndSeconds - minutes) * 60);
return deg.ToString() + "°" + minutes.ToString() + "\'" + seconds.ToString() + "\"";
}
}
}
Consulte também
Outros recursos
Etapa 2: Adicionar uma referência da Web
Etapa 3: acessar o serviço da Web
Etapa 1: Criar um projeto e adicionando uma referência UDF
Etapa 2: Criando um gerenciado-código UDF
Etapa 3: Implantando e ativando UDFs, Uniqueness Database Files
Etapa 4: Teste e chamar UDFs, Uniqueness Database Files de células
Walkthrough: desenvolvendo um aplicativo personalizado usando os serviços da Web Excel
Acessando o SOAP API