Para utilizar los controles de Excel Services podemos utilizar directamente las clases del ensamblado Microsoft.Office.Excel.WebUI.dll. El problema que encontramos a la hora de agregarlo a nuestro proyecto de visual Studio es que la dll no se encuentra en alguna de las carpetas de SharePoint “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14” y “C:\Program Files\Microsoft Office Servers\14.0”.
La solución consiste en extraer Microsoft.Office.Excel.WebUI del GAC e incluirlo en las carpetas del proyecto. Para extraerlo del GAC:
- Abrimos una consola de comandos con permisos de administrador
- cd c:\Windows\assembly
- dir (para consultar los ficheros disponibles)
- cd GAC_MSIL
- cd Microsoft.Office.Excel.WebUI
- cd 14.0.0.0__71e9bce111e9429c
- copy Microsoft.Office.Excel.WebUI.dll c:\ (Para extraer una copia a c")
Al agregar el fichero al proyecto podremos utilizar por ejemplo el control ExcelWebRender con el que personalizar la presentación de ExcelServices.
Si estamos realizando una migración desde 2007 a 2010 nos podemos encontraremos un error al compilar:
Error 1 El tipo 'Microsoft.Office.Excel.WebUI.IStateOwner' está definido en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'Microsoft.Office.Excel.WebUI.Internal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
Error 2 El tipo 'Microsoft.Office.Excel.WebUI.IMainControl' está definido en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'Microsoft.Office.Excel.WebUI.Internal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
Error 3 El tipo 'Microsoft.Office.Excel.WebUI.IRenderingContext' está definido en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'Microsoft.Office.Excel.WebUI.Internal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
Esto se debe a que la firma de las dll’s ha cambiado y se han agregado nuevas dll’s para el manejo de Excel Services. De modo que tendremos que cambiar en nuestros ASCX o ASPX las firmas de los assemblies:
SharePoint 2007:
<%@ Register TagPrefix="WpNs0" Namespace="Microsoft.Office.Excel.WebUI" Assembly="Microsoft.Office.Excel.WebUI, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
SharePoint 2010:
<%@ Register TagPrefix="WpNs0" Namespace="Microsoft.Office.Excel.WebUI" Assembly="Microsoft.Office.Excel.WebUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
Además añadiremos la dll Microsoft.Office.Excel.WebUI.Internal.dll que se encuentra también en el GAC, para extraerla utilizaremos una secuencia similar a la anterior:
- Abrimos una consola de comandos con permisos de administrador
- cd c:\Windows\assembly
- dir (para consultar los ficheros disponibles)
- cd GAC_MSIL
- cd Microsoft.Office.Excel.WebUI.Internal
- cd 14.0.0.0__71e9bce111e9429c
- copy Microsoft.Office.Excel.WebUI.Internal.dll c:\ (Para extraer una copia a c")
No hay comentarios:
Publicar un comentario