Configuração de Serviços Excel Questões e dicas
O seguinte é uma lista de problemas conhecidos e dicas para trabalhar com Serviços do Excel.
O serviço da Web Excel
Local WSDL
You can view the Serviços Web do Excel Web Services Description Language (WSDL) page by navigating to the following URL on the server: http://<server>/<customsite>/_vti_bin/excelservice.asmx?WSDL
Se você não tiver um personalizado site, você pode a WSDL usando a seguinte exibição URL:
http://<server>/_vti_bin/excelservice.asmx?WSDL
Para obter mais informações, consulte Acessando o SOAP API.
Serviços e os espaços para nome
O objeto serviço da Web único que contém todos os métodos API: ExcelService
Espaço para nome do esquema:
https://schemas.microsoft.com/office/excel/server/webservices
O nome da página serviço da Web: ExcelService.asmx
Vínculo Local ou serviço da Web
Em determinadas situações, você deve link diretamente para Microsoft.Office.Excel.Server.WebServices.dll e acessar qualquer local-la como você pode conjuntos, instead of chamado-lo como um serviço da Web por SOAP pela HTTP.
Para obter mais informações e diretrizes sobre quando usar direcionar vinculação, consulte SOAP Loop-Back chama e direta vinculação.
Caracteres inválidos
As chamadas a métodos GetCell GetRange e GetRange falhará se a células pasta de trabalho contenham caracteres que são inválido em uma resposta XML.
De exemplo, se uma célula contiver caracteres com hexadecimal hexadecimal valores 0 x 1, 0 x 2... o analisador ASP.NET 0x8, irá lançar uma exceção que o valor do caractere que está sendo escrito para a resposta XML é inválido:
System.InvalidOperationException: cliente Encontrado tipo de conteúdo resposta de ' text/html; charset = utf-8 ', mas esperava 'text/xml'. The request failed with the error message: -- <html> <head> <title>' ', hexadecimal value 0x01, is an invalid character.</title>
Esse comportamento é esperado. A especificação XML que define quais caracteres são permitidos em um válido resposta XML especifica valores que hexadecimal 0 x 1, 0 x 2... 0x8 são inválido caracteres XML:
Char:: = #x9 | #XA | #XD | [# x 20-nº xD7FF] | [# xE000-#xFFFD] | [# x x10FFFF 10000-#] / * qualquer caractere Unicode, excluindo os blocos substituto, FFFE e FFFF. */
W3C (World Wide Web Consortium) XML (XML) especificaçãoPara obter mais informações, consulte (http://www.w3.org/TR/REC-XML\#NT-Char).
Salvar uma pasta de trabalho
Quando você faz alterações para um pasta de trabalho ? de exemplo, por valores configuração para um intervalo usando Serviços Web do Excel ? as alterações para o pasta de trabalho são preservadas apenas para essa sessão específica. As alterações não são salvos ou persistentes voltar para o original pasta de trabalho. Quando o atual extremidades sessão pasta de trabalho (de exemplo, quando você chamar o método CloseWorkbook CloseWorkbook, ou a sessão expira), as alterações feitas serão perdidas.
Se você desejar para salvar alterações um pasta de trabalho, você pode usar o método GetWorkbook GetWorkbook e, em seguida, salvar o pasta de trabalho usando a API de armazenar a arquivo de destino. Para obter mais informações, consulte Como a: Obter uma pasta de trabalho inteira ou um instantâneo e Como a: salvar uma pasta de trabalho.
Propriedade URL de uma classe proxy de serviços da Web Excel
Não use a propriedade Url URL de um proxy Serviços Web do Excel eswsshort para a localidade de pasta de trabalho desejar para aberto. A propriedade Url URL de uma classe proxy serviço da Web gerado pelo Visual Studio obtém ou define a URL básico de serviço da Web de XML o cliente está solicitando. Isso é geralmente a maiúsculas e minúsculas de Serviços Web do Excel:
http://<server name>/_vti_bin/ExcelService.asmx
Para especificar a localidade de um pasta de trabalho, use o OpenWorkbook método OpenWorkbook instead of a propriedade Url URL, para exemplo:
//Instantiate the Web service and make a status array object.
ExcelService xlservice = new ExcelService();
string sheetName = "Sheet1";
//Set the path to the workbook to open.
//TODO: Change the path to the workbook
//to point to a workbook you have access to.
//The workbook must be in a trusted location.
string targetWorkbookPath =
"http://myserver02/example/Shared%20Documents/Book1.xlsx";
//Set credentials for requests.
xlservice.Credentials = System.Net.CredentialCache.DefaultCredentials;
//Call the open workbook, and point to the trusted
//location of the workbook to open.
string sessionId = xlservice.OpenWorkbook(targetWorkbookPath, "en-US",
"en-US", out outStatus);
Propriedade WebClientProtocol.UrlPara obter mais informações, consulte (https://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebServicesProtocolsWebClientProtocolClassUrlTopic.asp).
Segurança
Pasta de trabalho permissões
Serviços Web do Excel usa a esquema autorização Windows SharePoint Services 3.0 wssversion3 para verificar que o chamador tem o direito para chamar APIs (isto é, faça chamadas serviço da Web) no site Windows SharePoint Services 3.0 wssversion3short (that is, o site onde se encontra Serviços Web do Excel) remotamente. Se o chamador não tem o "Use Remote API" direito, a Serviços Web do Excel retorna uma "HTTP 401 (não autorizado)" Erro e registra um evento "API autorização falha". Serviços Web do Excel executa essas verificações autorização somente para chamadas originadas como chamadas SOAP. Chamadas de aplicativos que link localmente para Microsoft.Office.Excel.Server.WebServices.dll não são considerados remoto chamadas. Portanto, eles não estão sujeitos a verificações autorização. No entanto, se o aplicativo que vincula localmente para Microsoft.Office.Excel.Server.WebServices.dll é um serviço SOAP e lida com chamadas do serviço de SOAP, a chamar para Serviços Web do Excel irá parecer um chamada SOAP (mesmo que o aplicativo links diretamente para Microsoft.Office.Excel.Server.WebServices.dll). Neste cenário, Serviços Web do Excel fará verificações de autorização.
Para get o pasta de trabalho inteiro (de exemplo, por chamado o GetWorkbook GetWorkbook método usando o
WorkbookType.FullWorkbook
WorkbookType.FullWorkbook argumento), o chamador precisa "aberto" permissão para a permissão "ler" em um compartilhamento de arquivo ou pasta de trabalho.Para chamar o GetApiVersion GetApiVersion método, nenhuma permissão é necessária.
Para o restante dos métodos eswsshort Serviços Web do Excel, além das credenciais, o chamador precisa permissão "exibição" (em Windows SharePoint Services 3.0) ou permissão "ler" (em um compartilhamento de arquivo) para o pasta de trabalho.
Local confiável
As pastas de trabalho desejar para aberto em Serviços do Excel deve ser colocado em uma de confiança localidade. Se não, a Serviços Web do Excel chama para aberto o pasta de trabalho falhará.
Dica
Para informações sobre como confiança uma localidade, consulte Como a: um local relação de confiança e Como a: relação de confiança locais de pasta de trabalho com scripts.
Visual Studio
Comportamento de proxy Microsoft Visual Studio
Quando Microsoft Visual Studio cria uma classe proxy para um projeto cliente que chama Serviços Web do Excel, ela tem o seguinte comportamento:
Se um método tem não valor de retorno e um ou mais out argumentos fora, o primeiro out argumento out será movido para se tornar o valor de retorno. Isto é, o método na classe de proxy terá um menos out argumento out na assinatura de método. Mas a assinatura terá um valor de retorno com o tipo e de conteúdo de quais usado para ser o primeiro out argumento out.
Os métodos afetado Serviços Web do Excel eswsshort são:
Calculate
CalculateA1
CalculateWorkbook
CancelRequest
CloseWorkbook
GetSessionInformation
Refresh
SetCell
SetCellA1
SetRange
SetRangeA1
Funções User-Defined Excel de serviços (UDFs, Uniqueness Database Files)
Cache do conjunto de módulos (assembly) global é verificada primeiro, E a pasta local
Pelo design em .NET Framework o Microsoft, um assembly em um cache global de assemblies será carregado instead of o mesmo assembly em um local pasta. O Common Language Runtime será aspecto de um assembly na cache global de assemblies primeiro antes de pesquisar no local a pastas.
Portanto, se um assembly estiver instalado na cache global de assemblies e está na UDF lista mas desativado (ou removido da lista de UDF totalmente), e um assembly idêntico é instalado em um local pasta e habilitado, o assembly no cache global de assemblies será ainda get carregado e usado instead of o mesmo assembly no local a pasta.
Isso não afeta atualizar cenários nos quais a versão assembly foi modificado, o que significa o assembly não é o mesmo mais.
Geral
Ordem das seqüências de caracteres na Sharedstring.xml é não mantidos
Serviços do Excel não mantém o original ordem de seqüências de caracteres em um pasta de trabalho compartilhado-tabela de seqüências (a parte sharedstrings.xml dentro o arquivo Formato XML Microsoft Office Excel xlxmlformat). De exemplo, executar as seguinte etapas:
Abra um arquivo em Microsoft Office Excel 2007.
Salve o arquivo no formato arquivo .xlsx.
Carregar o arquivo para uma biblioteca documento que é uma de confiança localidade.
Abra o arquivo na biblioteca de documento usando O Excel Web do Access.
Clique em abrir no Excel .
Salve o arquivo no formato arquivo .xlsx.
Se você comparar o arquivo sharedstrings.xml criado na etapa 2 com a etapa criada em um 6, você poderá localizar a ordem das Partes sharedstrings.xml pode ser diferente.
Você não deve escrever um aplicativo que assume a ordem de seqüências de caracteres no compartilhada - tabela de seqüências é fixa. De exemplo, você não pode substituir o compartilhada - tabela de conversão localizadas tabela de seqüências com um existente. Você deve ajustar para a nova ordem de seqüências de caracteres no compartilhada-tabela de seqüências.
Consulte também
Outros recursos
Práticas recomendadas de Serviços Excel
Alertas de Serviços Excel
Arquitetura dos serviços Excel
Recursos sem suporte nos serviços Excel
Acessando o SOAP API
Como a: um local relação de confiança
Como a: relação de confiança locais de pasta de trabalho com scripts
Blogs de Serviços Excel