Um cliente entrou em contato comigo, reclamando das planilhas do Excel que estavam demorando muito para abrir. Eles usam o Excel para criar faturas e, portanto, têm centenas de planilhas do Excel com formatação leve e cálculos muito simples. Ao classificar as planilhas por tamanho, vi que, enquanto a maioria das planilhas variava de 10 a 250 mil, havia várias planilhas com tamanhos de arquivo de 2 a 3 MB e mais. Estranhamente, o tamanho dos arquivos não era grande, eles não mantinham muitos dados, apenas um pouco de formatação, talvez duas ou três páginas de faturas impressas, mas a quantidade de dados era quase idêntica às planilhas de tamanho menor (e com abertura normal) .
Ao abrir o arquivo, a quantidade de RAM necessária aumentaria de 3 MB para 400 MB e ocuparia completamente um único núcleo (testado em um núcleo duplo no escritório e no meu laptop quad-core) durante a inicialização. Eu pensei que eles de alguma forma pegaram algum código VBA, mas não há macros, nenhum código VBA. Ctrl + End mostra 39 linhas e cerca de 12 colunas (termina em M). Eu até apaguei os dados, linha por linha, ou coluna por coluna, até que não restem mais dados, e isso ainda me dá o mesmo problema.
Analisei muitas pesquisas no Google, mas não cheguei a lugar algum. Alguém pode oferecer alguma ajuda?
fonte
Respostas:
Encontrei a resposta para o meu problema!
Usando as dicas que o allquixotic me deu, abri os arquivos xlsx no 7-Zip e comparei os tamanhos dos arquivos. Havia um arquivo muito maior que os outros. O arquivo xl \ drawings \ drawing1.xml era um arquivo que continha várias referências a formatos, uma e outra vez.
Passei algumas horas tentando descobrir um padrão, mas não consegui. Nada que eu pudesse fazer poderia funcionar! Então, após um ataque de agravamento, acabei de excluir o maldito arquivo e tentei reabri-lo no Excel (2010 - não testei no Excel 2007).
Ele reclamou que o arquivo estava danificado e perguntou se eu gostaria de tentar um reparo. Reparar o arquivo simplesmente apagou a forma, mas não mudou a formatação do arquivo. Eu tive que salvar novamente o arquivo como o mesmo arquivo, o que foi um pouco estranho, mas funcionou!
Como mencionei antes, eu não havia testado essa solução para outros produtos além do Excel 2010, portanto não sei se o arquivo de forma foi crítico para o Excel 2k7 ou qualquer produto OpenOffice. Mas, se você tiver um problema semelhante, espero que isso possa ser útil.
fonte
Você está usando o formato .xls binário ou o novo formato .xlsx baseado em XML? Em geral, o formato .xlsx resulta em uma redução drástica no tamanho do arquivo.
Verifique se há um número excessivo de estilos armazenados no documento.
Tente "remover informações pessoais" (um recurso do Excel / Word / etc.) Para limpar certos tipos de sujeira que possam estar no arquivo.
Se a planilha for, ou tiver sido compartilhada anteriormente, pode ter dados antigos de compartilhamento armazenados nela.
Uma solução simples é copiar e colar apenas os dados relevantes dessa planilha em uma nova, salvá-los no formato .xlsx e ver como são pequenos. Se for muito pequeno, você terá a sua resposta - o Excel está fazendo uma contabilidade insuficiente das estruturas de dados do formato de arquivo interno.
Verifique também fórmulas complicadas ou circulares e referências a folhas externas (especialmente as de unidades de rede). Se você acha que uma fórmula pode ser lenta, você pode fazer isso usando a ferramenta de auditoria da fórmula.
Última coisa: se você o salvar como um arquivo .xlsx e ele ainda for grande, tente fazer o download da ferramenta de produtividade do OpenXML SDK: http://www.microsoft.com/en-us/download/details.aspx?id=5124
Abra o arquivo .xlsx e dê uma olhada em todos os elementos do arquivo e veja se algo é obviamente estranho. Isso pode exigir conhecimento de XML e dos esquemas específicos do OpenXML, mas é uma maneira infalível de descobrir o que está causando o inchaço.
PS - se esse tipo de coisa o incomoda, pare de usar os formatos / programas da Microsoft ou sugira ao seu cliente que faça isso. Se você procurar no Google por "inchaço do banco de dados do Microsoft Access", verá que a Microsoft tem um longo histórico de permitir que seus formatos proprietários vazem toneladas de dados inúteis no disco que nunca são limpos. É como um vazamento de memória realmente desagradável que come seu disco em vez de sua RAM.
fonte
Outra solução possível seria:
Quando há muita formatação, especialmente se houver muitos estilos diferentes aplicados a várias células individuais, o Excel realmente tenta aplicar a formatação ao abrir arquivos.
Naturalmente, quando você remove toda a formatação, acaba com apenas o texto com o estilo padrão aplicado a todas as células sem bordas, sombreamento, etc. Mas desta maneira você pode identificar a causa do problema.
fonte
Para uma redução drástica no tamanho, você pode tentar o formato .xlsb. Deve reduzir mais do que qualquer outro formato baseado em XML que o excel forneça.
Abra uma dessas planilhas e dê uma olhada no formato. Procure por qualquer coisa usual. Tente copiar a coluna inteira para outra planilha do Excel e cole apenas os valores (sem formatação). Veja se isso ajuda.
fonte
No meu caso, o problema estava relacionado ao "Formatar como tabela". A tabela tinha 16000 colunas vazias. Eu acho que essa é uma das razões mais frequentes para esse tipo de problema.
fonte
Eu dei uma olhada em todas as regras de formatação condicional, em toda a planilha, e havia muitas. Eu passei e limpei todos eles, e depois criei os que eu realmente precisava, e agora é muito rápido. Também me livrei de todas as 'Conexões' de que não precisava e salvei como .xlsb depois que tudo funcionou bem, e agora é ainda mais rápido: o)
fonte