none
Exceção 0x800A03EC Excel - WebApplication RRS feed

  • Pergunta

  • Bom dia pessoal,

     

    Estou com um problema para salvar um arquivo do Excel.

     

    Tenho um aplicativo Web que gera um relatório em Excel, com várias planilhas e formatação pré-definida, até aí tudo bem.

    Quando eu tento salvar o arquivo ocorre o seguinte erro:

     

    System.Runtime.InteropServices.COMException: Exceção de HRESULT: 0x800A03EC

     

    Exatamente nessa linha:

    WorkBook.SaveAs(path, Excel.XlFileFormat.xlXMLSpreadsheet, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,

    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

     

    Inseri a seguinte linha na inicialização do aplicativo Excel, mas também não tive êxito.

     

    System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");

     

    Alguém já teve um problema parecido, ou pode me dar uma dica de como resolver?

     

    Estou usando Excel 2003 / Windows Server 2008 e IIS 7

     

    Muito obrigada,

     

    Eliane

    terça-feira, 11 de novembro de 2008 12:07

Todas as Respostas

  • Eliane,

     

    Verifique se o usuário ASPNET, ou o usuário que sua aplicação ASP.NET está utilizando possui direitos de escrita na pasta onde o arquivo XLS está sendo salvo.

     

    Att.

     

    Ari

     

    quarta-feira, 12 de novembro de 2008 00:39
  • Bom dia Ari,

     

    Obrigada pelo retorno.

     

    Tem sim, dei permissão para o usuário Serviço de Rede e o Grupo IIS_IUSRS, mas mesmo assim ele continua dando erro nesse linha.

     

    Obrigada,

     

    Eliane

    quarta-feira, 12 de novembro de 2008 10:28
  • Boa tarde Eliane,

    Em relação ao seu erro utilizei desse jeito e deu certo:

    xlw.SaveAs(nomedoarquivo, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)

    onde xlw é o workbook.

    Estou tendo problemas também com esse erro mas é na utilização do comando xl.activeprinter, onde xl é o excel.application. Eu estou fazendo uma etiqueta modelo para imprimir na impressora térmica, então creio que eu conseguir setar a impressora dê certo.

    Espero ter ajudado, se alguém tiver algo sobre o meu problema agradeço.

    Obrigado

    Thiago

    terça-feira, 25 de setembro de 2012 20:29
  • Pessoal,

    Caso precisem de mais ajuda, segue um código em funcionamento trabalhando com DataTable:

    try
                        {                
                            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    
                            // Mantem a instancia do Excel invisivel
                            excel.Visible = false;
    
                            // Adiciona um WorkBook ao Excel
                            Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Type.Missing);
    
                            DataTable dtInformacoes = Conexao.CarregaPessoas(strCodApplication, strCodPerguntas);
                            dtInformacoes.TableName = "Dados";
    
                            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item(1);
                            worksheet.Name = dtInformacoes.TableName;
    
                            for (int i = 0; i < dtInformacoes.Columns.Count; i++)
                            {
                                // Pega o Index da coluna. No DataTable o index inicia em 0 e no Excel em 1
                                int ColumnIndex = i + 1;
    
                                // Retorna a celula do Excel
                                Microsoft.Office.Interop.Excel.Range range = (worksheet.Cells[1, ColumnIndex] as Microsoft.Office.Interop.Excel.Range);
    
                                // Atribui valor a celula
                                range.Value2 = dtInformacoes.Columns[i].ColumnName;
                            }
    
                            progressBar1.Minimum = 0;
                            progressBar1.Maximum = dtInformacoes.Rows.Count;
    
                            for (int i = 1; i < dtInformacoes.Rows.Count + 1; i++)
                            {
                                progressBar1.Increment(i);
    
                                for (int j = 0; j < dtInformacoes.Columns.Count; j++)
                                {
                                    object value = dtInformacoes.Rows[i -1][j];
    
                                    // Pega o Index da linha. No DataTable o index inicia em 0 e no Excel em 1
                                    int RowIndex = i + 1;
    
                                    // Pega o Index da coluna. No DataTable o index inicia em 0 e no Excel em 1
                                    int ColumnIndex = j + 1;
    
                                    // Retorna a celula do Excel
                                    Microsoft.Office.Interop.Excel.Range range = (worksheet.Cells[RowIndex, ColumnIndex] as Microsoft.Office.Interop.Excel.Range);
    
                                    // Atribui valor a celula
                                    range.Value2 = value;
                                }
                            }
    
                            if (System.IO.File.Exists(salvar.FileName)) System.IO.File.Delete(salvar.FileName);
    
                            // Salva o arquivo excel no caminho especificado
                            workbook.SaveAs(salvar.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    
                            // Fecha o Excel
                            excel.Quit();
    
                            MessageBox.Show("Exportado com sucesso !");
    
                            progressBar1.Value = 0;
                            System.Diagnostics.Process.Start(salvar.FileName); 
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                            progressBar1.Value = 0;
                        }


    Atenciosamente, Samuel dos Anjos

    sexta-feira, 14 de dezembro de 2012 22:39
  • Eu tive esse problema usando a versão desktop resolveu com:

    criar variavies sem tipa-lás... ex:

    var ExcelApp = new Excel.Application();

    var WrokBook ....

    Falow ae

    Abraços


    quinta-feira, 17 de janeiro de 2013 21:18