A exportação para Excel é um recurso valioso no dia-a-dia dos usuários, mas se não for usado com cautela, pode causar uma grande dor de cabeça para quem administra a infraestrutura do servidor.
Isso porque o processo de geração do arquivo .xlsx
, é complexo e inevitavelmente ocorre na memória do servidor, liberando-a apenas no final do processo. Quando estamos trabalhando com um conjuntos de dados moderado (cerca de 1000 registros), não é possível perceber, mas quando o volume de dados é muito grande (podendo inclusive ocorrer simultaneamente com usuários diferentes) é possível observar um consumo de memória excessivo no servidor.
Solução
A solução para este problema é bem simples:
Exportar a Consulta para CSV ao invés de exportar para Excel.
Ao contrário da geração do arquivo .xlsx
, ao gerar o arquivo .csv
os dados são escritos no arquivo e liberados da memória linha por linha.
Em contra partida, o arquivo .csv
não possui alguns recursos como: Cores, Agrupamentos e Totalizadores.
Veja a seguir as diferenças e semelhanças entre os dois tipos de arquivos:
Excel | CSV | |
---|---|---|
Compatível com OpenOffice | ||
Compatível com LibreOffice | ||
Texto plano | ||
Baixo consumo de memória | ||
Tamanho reduzido | ||
Formatação | ||
Agrupamento | ||
Totais |
Desabilitando a exportação para Excel
Desabilitando na Consulta
Para desabilitar a exportação de Excel em uma Consulta, basta desmarcar a propriedade “Habilitar Exportação para Excel” nas configurações da Query. Isso vai fazer com que o botão de Exportação para Excel não seja exibido.
Desabilitando Geral
Não existe um parâmetro para desabilitar a exportação para Excel de forma global no sistema.
Mas se isso realmente estiver causando problemas, podemos ocultar o botão de exportação para Excel usando o código abaixo no CSS Público do sistema:
.QueryObjectDisambig.grid-type .cmdBarButton.img-cmdbar-excel {
display: none;
}