Pergunta

Tenho uma aplicação ASP.NET que permite aos usuários exportar ausências do seu pessoal a cada mês para Microsoft Excel. A aplicação está gerando a seguinte exceção

Exceção:. Não é possível criar componente ActiveX

com o seguinte rastreamento de pilha

System.Exception: Não é possível criar o componente ActiveX. em Microsoft.VisualBasic.Interaction.CreateObject (String Progld, String ServerName) em HR.ManagerSummary.ExportToExcel () em H: \ Desenvolvimento \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Tempo \ ManagerSummary.aspx.vb: Linha 935 em HR.ManagerSummary.btnExcel_Click (Object sender, EventArgs e) em H: \ Desenvolvimento \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Tempo \ ManagerSummary.aspx.vb: Linha 891 em System.Web.UI.WebControls.Button.OnClick (EventArgs e) em System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) em System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) em System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler SourceControl, String eventArgument) em System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) em System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

O código de falha na linha de CreateObject.

    'Create the Excel object
    Dim objXL As Object = CreateObject("Excel.Application") ' New Microsoft.Office.Interop.Excel.Application
    Dim objWB As Object = objXL.Workbooks.Add
    Dim objWS As Object = objWB.Worksheets(1)

Eu tenho permissão set em DCOM Config para Microsoft Application Excel para a conta IUSR_ mas isso não resolveu o problema. Alguma idéia seria muito apreciada.

Felicidades

James

Foi útil?

Solução

Após a migração das nossas aplicações ASP.NET para um novo hardware, I investigado esta questão e veio com uma solução.

Para resolver o problema, abra "Component Services" de Ferramentas Administrativas e navegar como se segue:

  • Serviços de Componentes -> Computadores -> Meu computador -> DCOM Config -> Microsoft Application Excel
  • clique com o botão direito Microsoft Application Excel -> Propriedades -> guia Segurança
  • Clique em Personalizar para "permissões de ativação e" -> Editar -> Adicionar
  • Digite "Serviço de rede", clique em "Verificar nomes", clique em OK
  • Permitir "Lançamento Local" e "activação local" para "Serviço de rede" e clique em OK
  • Select personaliza para "Permissões de acesso" -> Editar -> Adicionar
  • Digite "Serviço de rede", clique em "Verificar nomes", clique em OK
  • Permitir "Acesso Local" para de "Serviço de rede" e clique em OK
  • Clique em OK

A aplicação ASP.NET agora com êxito pode criar uma planilha do Microsoft Excel que contém os dados exportados.

Outras dicas

Será que você registrou o ActiveX no servidor?

http://support.microsoft.com/kb/146219

SpreadsheetGear for .NET vai deixar você guardar xls e pastas de trabalho XLSX diretamente para um fluxo de resposta com IWorkbook. SaveToStream. É todo o código # segura conseguiu C por isso não há necessidade de executar qualquer coisa como administrador e você não vai correr para os problemas que o Excel interoperabilidade trazer em um servidor ASP.NET.

Você pode ver alguns simples amostras de relatórios ASP.NET Excel (C # e VB) usando SpreadsheetGear aqui e baixar o teste gratuito aqui se você quiser experimentá-lo -se.

Disclaimer: eu próprio SpreadsheetGear LLC

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top