jueves, 7 de agosto de 2014

Excel Services - "The workbook cannot be opened" Sharepoint 2013

Cuando abro un Excel en Excel Services me lanza el error: "The workbook cannot be opened"

image

Revisando los logs, veo los siguientes errores:

Error 1:

ServerSession.ProcessServerSessionException: An exception during ExecuteWebMethod has occurred for server: http://urlwebapplication:32843/021d25c448d8404da46c5b6ef1609db8/ExcelService*.asmx, method: OpenWorkbook, ex: Microsoft.Office.Excel.Server.CalculationServer.Proxy.ServerSessionException: The workbook cannot be opened..

Error 2:

Result=Microsoft.Office.Excel.Server.CalculationServer.Proxy.ServerSessionException: The workbook cannot be opened.   
at Microsoft.Office.Excel.Server.CalculationServer.Proxy.ServerSession.ExecuteWebMethodCore(WebMethodType webMethodType, WebMethodBehaviorAttribute webMethodBehavior, CommandParameter parameter, CoreWebMethod coreWebMethod)   
at Microsoft.Office.Excel.Server.CalculationServer.Proxy.ServerSession.ExecuteWebMethod(WebMethodType webMethodType, WebMethodBehaviorAttribute webMethodBehavior, CommandParameter parameter, CoreWebMethod coreWebMethod)

EwaState.OpenWorkbookAndUpdateState: errors occurred while trying to open the workbook, [MessageId: GenericFileOpenError, MessageIdHash: -2005647745]

Solución

Ejecuto el siguiente script de powershell

$w = Get-SPWebApplication –Identity <URL of the Web application>
$w.GrantAccessToProcessIdentity("<insert service account>")

La cuenta que debo otorgarle permisos, es la de Excel Services. Para ello realizo los siguientes pasos:

Entro al Central Administration a la sección se Security. “Configure Service Accounts”

image

Elijo la cuenta que se usa para el pool del Service Application de Excel Services. En mi caso era Service Application Pool – Sharepoint Web Services Default, pero puedo variar la cuenta dependiendo como lo tengas configurado.

image

Ej: si la cuenta era DOMINIO\AppPoolDefaultAccount

$w = Get-SPWebApplication –Identity http://url_webApplication

$w.GrantAccessToProcessIdentity("DOMINIO\AppPoolDefaultAccount")

Este comando lo que hace es:

  • Agregar la cuenta que ejecuta Excel Services como usuario en las bases de contenido del web application
  • Otorga a la cuenta que ejecuta Excel Services el rol de SPDataAccess
  • Otorga a la cuenta que ejecuta Excel Services permisos de full control sobre el Web Application vía una policy.

1 comentario: