Share via


Sugerencias y problemas conocidos de Excel Services

Debajo se enumeran problemas conocidos y sugerencias para trabajar con Excel Services.

Excel Web Service

Visualización de la ubicación WSDL

Para ver la página Lenguaje de descripción de servicios web (WSDL) de Servicios web de Excel, vaya a la siguiente dirección URL en el servidor: http://<server>/<customsite>/_vti_bin/excelservice.asmx?WSDL

Si no tiene un sitio personalizado, puede ver el WSDL mediante la siguiente dirección URL: http://<server>/_vti_bin/excelservice.asmx?WSDL

Para obtener más información, consulte Acceso a la API SOAP.

Información acerca de los espacios de nombres y Excel Web Services

Debajo se muestran espacios de nombres y Excel Web Services:

  • El objeto de servicio web único que contiene todos los métodos de API: ExcelService
  • Espacio de nombres del esquema: http://schemas.microsoft.com/office/excel/server/webservices
  • Nombre de la página del servicio web: ExcelService.asmx

Vinculación de forma local o en un servicio web

En ciertos escenarios, debe vincular directamente a Microsoft.Office.Excel.Server.WebServices.dll y obtener acceso a él como lo haría con cualquier conjunto local, en lugar de llamarlo como un servicio web a través de SOAP mediante HTTP.

Para obtener más información e instrucciones sobre cuándo usar la vinculación directa, consulte Llamadas SOAP de bucle de retroceso y vinculación directa.

Información acerca de los caracteres no válidos

Se producirá un error en las llamadas a los métodos GetCell y GetRange si las celdas del libro contienen caracteres no válidos en una respuesta XML.

Por ejemplo, si una celda contiene valores hexadecimales 0x1, 0x2... 0x8, el analizador de ASP.NET producirá una excepción indicando que el valor del carácter que se escribe en la respuesta XML no es válido:

System.InvalidOperationException: el cliente encontró el tipo de contenido de respuesta 'text/html; charset=utf-8', pero se esperaba 'text/xml'. Se produjo un error en la solicitud con el mensaje de error: -- <html><head><title>' ', valor hexadecimal 0x01, es un carácter no válido.

Este comportamiento es normal. La especificación XML que define qué caracteres se permiten en una respuesta XML válida especifica que los valores hexadecimales 0x1, 0x2 ... 0x8 son caracteres XML no válidos:

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] / cualquier carácter Unicode, excepto los bloques suplentes, FFFE y FFFF. /

Para obtener más información, vea Especificación del lenguaje de marcado extensible (XML) W3C.

Guardar un libro

[!NOTA] When you make changes to a workbook—for example, by setting values to a range using Servicios web de Excel—the changes to the workbook are preserved only for that particular session. The changes are not saved or persisted back to the original workbook. When the current workbook session ends (for example, when you call the CloseWorkbook method, or the session times out), changes you made will be lost.

If you want to save changes to a workbook, you can use the GetWorkbook method and then save the workbook using the API of the destination file store. For more information, see How to: Get an Entire Workbook or a Snapshot and Procedimiento para guardar un libro.

Información acerca de la propiedad URL de una clase de proxy de Excel Web Services

Do not use the Url property of an Servicios web de Excel proxy for the location of the workbook you want to open. The Url property of a web service proxy class generated by Visual Studio gets or sets the base URL of the XML web service the client is requesting. En el caso de Excel Web Services, esto suele ser lo siguiente: http://<server name>/_vti_bin/ExcelService.asmx

Para especificar la ubicación de un libro, use el método OpenWorkbook en lugar de la propiedad URL, tal y como se muestra en el siguiente ejemplo de código.

//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);

Para obtener más información, vea Propiedad WebClientProtocol.Url.

Understanding Security

Using Workbook Permissions

Tenga en cuenta los siguientes problemas relacionados con los permisos del libro:

  • Excel Web Services usa el esquema de autorización de Microsoft SharePoint Foundation para comprobar que el autor de la llamada tiene derecho a llamar a las API (es decir, realizar llamadas a servicios web) en el sitio de SharePoint Foundation (es decir, el sitio web donde se encuentra Excel Web Services) de forma remota. If the caller does not have the "Use Remote API" right, the Servicios web de Excel returns an "HTTP 401 (Unauthorized)" error, and logs an "API authorization failed" event. Servicios web de Excel performs these authorization checks only for calls that originate as SOAP calls. Calls from applications that link locally to Microsoft.Office.Excel.Server.WebServices.dll are not considered remote calls. Therefore, they are not subject to authorization checks. However, if the application that links locally to Microsoft.Office.Excel.Server.WebServices.dll is itself a SOAP service, and handles the service's SOAP calls, the call to Servicios web de Excel will seem like a SOAP call (even though the application links directly to Microsoft.Office.Excel.Server.WebServices.dll). In this scenario, Servicios web de Excel will perform the authorization checks.
  • Para obtener todo el libro (por ejemplo, al llamar al método GetWorkbook mediante el argumento WorkbookType.FullWorkbook), el llamador debe tener el permiso de "apertura" para el libro o un permiso de "lectura" en un recurso compartido de archivos.
  • No son necesarios permisos para llamar al método GetApiVersion.
  • Para el resto de métodos de Excel Web Services, además de las credenciales, el llamador necesita un permiso de "vista" (en SharePoint Foundation) o de "lectura" (en un recurso compartido de archivos) para el libro.

Trusted Location

The workbooks you want to open in Servicios de Excel must be placed in a trusted location. If not, the Servicios web de Excel calls to open the workbook will fail.

Para obtener información sobre cómo confiar en una ubicación, vea Cómo: Confiar en una ubicación y Cómo: Confiar en las ubicaciones del libro mediante script.

Visual Studio

Microsoft Visual Studio Proxy Behavior

Cuando Microsoft Visual Studio crea una clase proxy para un proyecto de cliente que llama a Excel Web Services, muestra el siguiente comportamiento:

If a method has no return value, and one or more out arguments, the first out argument is moved to become the return value. That is, the method in the proxy class will have one less out argument in the method signature. But the signature will have a return value with the type and content of what used to be the first out argument.

Los métodos de Excel Web Services afectados son:

  • Calculate
  • CalculateA1
  • CalculateWorkbook
  • CancelRequest
  • CloseWorkbook
  • GetSessionInformation
  • Refresh
  • SetCell
  • SetCellA1
  • SetRange
  • SetRangeA1

Funciones definidas por el usuario en Excel Services

Global Assembly Cache is Checked First, Then the Local Folder

By design in the Microsoft .NET Framework, an assembly in a global assembly cache will be loaded instead of the same assembly in a local folder. The common language runtime will look for an assembly in the global assembly cache first before searching in the local folders.

Por lo tanto, si se instala un ensamblado en la caché global de ensamblados y está en la lista UDF pero deshabilitado (o quita por completo de la lista UDF) y se instala y habilita un ensamblado idéntico en una carpeta local, el ensamblado en la caché global de ensamblados seguirá cargándose y utilizándose en lugar del mismo ensamblado en la carpeta local.

Esto no afecta a los escenarios de actualización en los que se ha modificado la versión del ensamblado, lo que significa que el ensamblado ya no es el mismo.

General

El orden de las cadenas de Sharedstring.xml no se mantiene

Excel Services no mantiene el orden original de las cadenas en una tabla de cadenas compartidas de libro (la parteSharedstrings.xml dentro del archivo de formato XML de Microsoft Office Excel). For example, execute the following steps:

  1. Abra un archivo de Excel.
  2. Guarde el archivo en el formato de archivo .xlsx.
  3. Cargue el archivo en una biblioteca de documentos que sea una ubicación de confianza.
  4. Abra el archivo de la biblioteca de documentos mediante Excel Web Access.
  5. Haga clic en Abrir en Excel.
  6. Guarde el archivo en el formato de archivo .xlsx.

Si compara el archivo Sharedstrings.xml creado en el paso 2 con el creado en el paso 6, encontrará que el orden de los elementosSharedstrings.xml puede ser diferente.

You should not write an application that assumes the order of strings in the shared-string table is fixed. For example, you cannot replace the shared-string table with an existing localized translation table. You must adjust to the new ordering of strings in the shared-string table.

Vea también

Tareas

Conceptos