none
Exportar para Excel 2013 demora RRS feed

  • Pergunta

  • Todos os relatórios de todos os nossos programas são exportados para o Excel, via código, e ao passar do Office 2010, aqui na empresa, para o Office 2013, todos os  relatórios dos programas ficaram lentos demais.
    Um relatório, de 5000 linhas, que demorava, no máximo, 3 minutos, agora demora mais de duas horas para ser gerado.
    Alguém sabe explicar?
    Enquanto isso, continuarei pesquisando na Internet sobre o assunto. 
    terça-feira, 11 de fevereiro de 2014 13:01

Respostas

  • Então a questão não é usar asp.net ou Windows form, o exemplo server para os dois, só adaptar. O problema é o uso do for, ele que vai deixar seu processo lento.

    Você tem que usar algum componente para passar sua tabela para o excel ou passar um array bidimensional para o excel.

    Da uma olhada nesse link:

    http://www.c-sharpcorner.com/Forums/Thread/88822/two-dimensional-array-to-excel-spreadsheet.aspx


    "just because you've abandoned your hopes of becoming a great thinker or scientist, don't give up on attaining freedom, achieving humility, serving others..." - 7.67 - Meditations - Marcus Aurelius

    • Marcado como Resposta Giovani Cr segunda-feira, 17 de fevereiro de 2014 20:08
    terça-feira, 11 de fevereiro de 2014 15:42

Todas as Respostas

  • Como você está gerando as planilhas?

    Com um foreach? Se sim tente fazer assim: http://www.dotnetjohn.com/articles.aspx?articleid=36


    "just because you've abandoned your hopes of becoming a great thinker or scientist, don't give up on attaining freedom, achieving humility, serving others..." - 7.67 - Meditations - Marcus Aurelius

    terça-feira, 11 de fevereiro de 2014 15:12
  • Já tinham me passado este exemplo.

    Minha aplicação não é Asp.net. É WindowsForm.
    Parte do meu For é este aí

    Dim PastaExcel As New Microsoft.Office.Interop.Excel.Application
            Dim Planilha As Microsoft.Office.Interop.Excel.Workbook
            Dim WoSheet As Microsoft.Office.Interop.Excel.Worksheet
            Dim Campo As Microsoft.Office.Interop.Excel.Range
    
    
    For Each Dado In colec
                    ProgressExportar.Increment(1)
                    ProgressExportar.Update()
                    lblAndamentoExportar.Text = "Exportando " & ProgressExportar.Value & " registros de " & colec.Count
                    Campo = WoSheet.Cells(X, 2) 'mês por extenso
                    Campo.Value = Dado(1)
    
                    Campo = WoSheet.Cells(X, 3) 'Data Dia
                    Campo.Value = Dado(2)
    
                    Campo = WoSheet.Cells(X, 4) 'Célula vazia (separação)
                    Campo.Value = " "
    
    '... continua
    Next

    terça-feira, 11 de fevereiro de 2014 15:34
  • Então a questão não é usar asp.net ou Windows form, o exemplo server para os dois, só adaptar. O problema é o uso do for, ele que vai deixar seu processo lento.

    Você tem que usar algum componente para passar sua tabela para o excel ou passar um array bidimensional para o excel.

    Da uma olhada nesse link:

    http://www.c-sharpcorner.com/Forums/Thread/88822/two-dimensional-array-to-excel-spreadsheet.aspx


    "just because you've abandoned your hopes of becoming a great thinker or scientist, don't give up on attaining freedom, achieving humility, serving others..." - 7.67 - Meditations - Marcus Aurelius

    • Marcado como Resposta Giovani Cr segunda-feira, 17 de fevereiro de 2014 20:08
    terça-feira, 11 de fevereiro de 2014 15:42