lunes, 18 de octubre de 2010

Dónde está Microsoft.Office.Excel.WebUI?

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:

  1. Abrimos una consola de comandos con permisos de administrador
  2. cd c:\Windows\assembly
  3. dir (para consultar los ficheros disponibles)
  4. cd GAC_MSIL
  5. cd Microsoft.Office.Excel.WebUI
  6. cd 14.0.0.0__71e9bce111e9429c
  7. 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:

  1. Abrimos una consola de comandos con permisos de administrador
  2. cd c:\Windows\assembly
  3. dir (para consultar los ficheros disponibles)
  4. cd GAC_MSIL
  5. cd Microsoft.Office.Excel.WebUI.Internal
  6. cd 14.0.0.0__71e9bce111e9429c
  7. copy Microsoft.Office.Excel.WebUI.Internal.dll c:\ (Para extraer una copia a c")

No hay comentarios: