Desabilitando exportação para Excel para evitar consumo indevido de memória

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 :white_check_mark: :white_check_mark:
Compatível com LibreOffice :white_check_mark: :white_check_mark:
Texto plano :no_entry: :white_check_mark:
Baixo consumo de memória :no_entry: :white_check_mark:
Tamanho reduzido :no_entry: :white_check_mark:
Formatação :white_check_mark: :no_entry:
Agrupamento :white_check_mark: :no_entry:
Totais :white_check_mark: :no_entry:

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.

image

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:

image

.QueryObjectDisambig.grid-type .cmdBarButton.img-cmdbar-excel {
   display: none;
}
Lembre-se de "Recarregar as Configurações" no site após alterar o CSS Público.
2 curtidas