Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas com grande volume de dados para Excel


Gustavo Neves

Pergunta

Fiz um sistema q gera uma planilha dinâmica para meu usuário afim de que ele mesmo monte seu próprio relatório.

Acontece que o volume de dados cresce muito de um dia para o outro e em menos de dois meses de uso já tenho mais de 12 mil registros.

Quando meu usuário esta exportando selecionando todas as colunas permitidas, esta dando o seguinte erro dentro do Excel: “O arquivo não foi completamente carregado.”.

Ps.: o erro só ocorre quando são muitos os registros.

Estou usando o método simples de exportação:

Response.ContentType = "application/vnd.ms-excel"

Preciso continuar usando este método, pois para usar o que cria um objeto do Excel faria ser necessário que todos meus usuários tenham em suas máquinas um client do Oracle (banco de dados em questão), já passaria a rodar local.

Bem desenvolvo em uma maquina com Windows XP, com IIS versão 5.1, nela habilitando o seguinte comando resolve: “Response.Buffer = true”.

Porem este comando não funciona muito bem no Windows Server 2003 com IIS 6.

Já verifiquei a configuração da máquina e lá a opção Buffer esta ativada e não esta aceitando grandes volumes na exportação ainda.

Ágüem tem alguma sugestão que não envolva CreateObject.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

RESPOSTA.......................................

Obrigado ao pessoal que se dispôs a pelo menos pensar no meu problema, mas já resolvi e como postei numa pancada de fóruns vou compartilhar a solução aqui:

Bem era bobeira o erro, quando você solicita grande massa de dados o período de execução do seu script logicamente fica mais demorado dando SCRIPT TIMEOUT bem não identifiquei o problema antes embora o tenha imaginado porque para mim quando dava TIMEOUT gerava uma exceção que eu poderia capturar no Err, porem não gera. =\

A solução foi muito simples bastou colocar:

Response.Buffer = True

Server.ScriptTimeout = 999999

O Buffer veio mais como complemento para garantir que vai funcionar legal, porem só com o Server.ScriptTimeout já da certo.

O EXGERO no TIMEOUT é só para evitar ter de mexer de novo neste código já que por dia minha tabela acresce cerca de 600 registros.

Recomendo também o pessoal que for fazer exportação para o Excel a combinar o já conhecido "Response.ContentType = "application/vnd.ms-excel" com:

Call Response.AddHeader("content-disposition", attachment;filename=Nome_do_Arquivo.xls")

Ele força o DOWNLOAD na forma de Arquivo do Excel, vantagens:

» não sobrecarrega o BROWSER do cliente que possivelmente estará com outras paginas importantes abertas, não correndo o risco de gera um erro de aplicação fechando tudo.

» fica mais atraente e habilita todos os recursos do Excel, melhorando a usabilidade da sua planilha.

vlwwwwwww galera!! :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...