Usuário com melhor resposta
Exportar para Excel 2013 demora

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.
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
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
-
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
-
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