Un client m'a contacté, se plaignant de feuilles de calcul Excel dont l'ouverture était beaucoup trop longue. Ils utilisent Excel pour créer des factures, ils ont donc des centaines de feuilles de calcul Excel avec un formatage léger et des calculs très simples. Lors du tri des feuilles de calcul par taille, j'ai constaté que la plupart d'entre elles allaient de 10 à 250 Ko, mais qu'il existait une poignée de feuilles de calcul d'une taille de fichier de 2 à 3 Mo et plus. Bizarrement, les tailles de fichiers n'étaient pas énormes, elles ne contenaient pas beaucoup de données, seulement un peu de formatage, peut-être deux ou trois pages de factures imprimées, mais leur quantité de données était presque identique à celle des feuilles de calcul de plus petite taille (et d'ouverture normale).
Lors de l’ouverture du fichier, la quantité de RAM nécessaire passerait de 3 à 400 Mo et occuperait un seul cœur (testé sur un processeur double cœur au bureau et sur mon ordinateur portable quadricœur). ), en commençant. Je pensais qu'ils avaient attrapé du code VBA, mais il n'y avait pas de macros, pas de code VBA. Ctrl + Fin affiche 39 lignes et environ 12 colonnes (se termine en M). J'ai même supprimé les données, ligne par ligne ou colonne par colonne, jusqu'à ce qu'il ne reste plus de données, et cela me pose toujours le même problème.
J'ai examiné de nombreuses recherches sur Google, mais je ne suis nulle part. Quelqu'un peut-il offrir de l'aide?
J'ai trouvé la réponse à mon problème!
En utilisant les indices fournis par allquixotic, j'ai ouvert les fichiers xlsx dans 7-Zip et comparé leurs tailles. Il y avait un fichier qui était beaucoup beaucoup plus gros que les autres. Le fichier xl\dessins\dessin1.xml était un fichier contenant plusieurs références à des formats, encore et encore.
J'ai passé quelques heures à essayer de trouver un modèle, mais je n'ai pas été capable de le faire. Rien de ce que j'ai pu faire ne pourrait le faire fonctionner! Ensuite, après une crise d'aggravation, je viens de supprimer le fichu fichier et d'essayer de rouvrir Excel (2010 - je ne l'ai pas testé dans Excel 2007).
Il s'est plaint que le fichier était endommagé et a demandé si je souhaitais tenter une réparation. La réparation du fichier a simplement effacé la forme, mais n'a pas du tout changé la mise en forme du fichier. J'ai dû réenregistrer le fichier dans le même fichier, ce qui était un peu étrange, mais cela a fonctionné!
Comme je l'ai déjà mentionné, je n'avais pas testé cette solution pour des produits autres que Excel 2010, donc je ne sais pas si le fichier de forme était essentiel pour Excel 2k7 ou pour un produit OpenOffice. Mais, si vous avez un problème similaire, cela pourrait être utile, espérons-le.
Utilisez-vous le format binaire .xls ou le nouveau format .xlsx basé sur XML? En général, le format .xlsx réduit considérablement la taille du fichier.
Recherchez des éléments tels qu'un nombre excessif de styles stockés dans le document.
Essayez de "supprimer les informations personnelles" (une fonctionnalité d'Excel/Word/etc.) pour nettoyer certains types de fichiers crus pouvant se trouver dans le fichier.
Si la feuille de calcul est, ou a déjà été partagée, des anciennes données de partage peuvent y être stockées.
Une solution simple consiste à copier et coller uniquement les données pertinentes de cette feuille de calcul dans une nouvelle, puis à les enregistrer au format .xlsx et voir à quel point elles sont petites. Si votre réponse est très petite, vous avez votre réponse: Excel comptabilise mal les structures de données de son format de fichier interne.
Vérifiez également les formules compliquées ou circulaires et les références aux feuilles externes (en particulier celles des lecteurs réseau). Si vous pensez qu'une formule peut être lente, vous pouvez la parcourir à l'aide de l'outil d'audit de formule.
Dernière chose: si vous enregistrez le fichier au format .xlsx et qu'il est toujours volumineux, essayez de télécharger l'outil de productivité OpenXML SDK: http://www.Microsoft.com/en-us/download/details .aspx? id = 5124
Ouvrez le fichier .xlsx dans celui-ci et jetez un coup d'œil à tous les éléments du fichier et voyez si quelque chose est manifestement superficiel. Cela peut nécessiter une connaissance de XML et des schémas OpenXML spécifiques, mais c’est un moyen infaillible de savoir ce qui cause le fiasco.
P.S. - si ce genre de chose vous agace, arrêtez d’utiliser les formats/programmes Microsoft ou suggérez à votre client de le faire. Si vous recherchez Google "Base de données de Microsoft Access", vous verrez que Microsoft a longtemps laissé ses formats propriétaires fuir des tonnes de données inutiles sur le disque, qui ne sont jamais nettoyées. C'est comme une fuite de mémoire vraiment méchante qui mange votre disque au lieu de votre RAM.
Une autre solution possible serait:
Lorsque la mise en forme est trop importante, en particulier si de nombreux styles différents sont appliqués à de nombreuses cellules individuelles, Excel a vraiment du mal à appliquer la mise en forme lors de l'ouverture de fichiers.
Naturellement, lorsque vous supprimez toute la mise en forme, vous obtenez uniquement un texte auquel le style par défaut est appliqué dans toutes les cellules dont les bordures, les ombrages, etc. ont disparu. Mais de cette façon, vous pouvez identifier la cause du problème.
Pour une réduction spectaculaire de la taille, essayez le format .xlsb. Devrait réduire plus que tout autre format XML fourni par Excel.
Ouvrez l'une de ces feuilles de calcul et examinez le format. Cherchez tout ce qui est habituel. Essayez de copier la colonne entière dans une autre feuille de calcul Excel et collez uniquement des valeurs (sans aucune mise en forme). Voyez si ça aide.
J'ai jeté un coup d'œil à toutes les règles de mise en forme conditionnelles, dans toute la feuille de travail, et il y avait des charges. Je les ai parcourues et les ai toutes nettoyées, puis j'ai créé celles dont j'avais réellement besoin, et maintenant, c'est très rapide. Je me suis également débarrassé de toutes les "connexions" dont je n'avais pas besoin, et enregistrez sous .xlsb après que tout a bien fonctionné, et c'est encore plus rapide maintenant: o)
Dans mon cas, le problème était lié à "Format as table". La table avait 16000 colonnes vides. J'imagine que c'est l'une des raisons les plus fréquentes de ce type de problème.