Modifier le niveau de compression Excel Zip sous Windows

8

Excel compresse ses fichiers à l'aide de Zip-Deflate et les stocke. Cependant, le niveau de compression est loin d’être le meilleur. Pour réduire la taille et l'envoyer, je dois décompresser et re-zipper manuellement à chaque fois. Existe-t-il un moyen de modifier le paramètre de niveau de compression dans Excel afin qu’il comprime et stocke le fichier à l’aide de la meilleure méthode possible?

OrangeRind
la source
2
Peut-être que simplement enregistrer est plutôt un fichier binaire (XLSB)?
cʜιᴇ007
@ Techie Comment convertir en binaire aide?
EliadTech
La taille du fichier sera beaucoup plus petite. Essayez-le et dites-nous comment ça se passe.
cʜιᴇ007
Enregistrer en binaire n'aide pas beaucoup. Pas aussi important que décompresser et décompresser. Peut-être qu'il y a une option pour le niveau de compression par défaut quelque part?
OrangeRind
Quelle version d'Excel et de Windows utilisez-vous? Comment allez-vous le compresser avec Excel (type de fichier et autres)?
Raystafarian

Réponses:

2

Vous pouvez également, via une macro VBA, remplacer le moteur zip.
Une macro qui utilise 7Zip pour effectuer la compression peut être trouvée dans l'article:
Zip Activeworkbook, Dossier, Fichier ou Fichiers avec 7-Zip (VBA) .

Une autre méthode dont l’amélioration de la taille est généralement d’environ 50% consiste à enregistrer le fichier dans le xlsbformat introduit dans Excel 2007. Le Save Asfichier en est une autre , qui réduit parfois sa taille, probablement en défragmentant.

De la poste Dans quel cas devrions-nous utiliser le format xlsm ou xlsb? :

La différence avec xlsb semble être que les composants ne sont pas basés sur XML mais dans un format binaire: cela est censé être bénéfique lorsque vous travaillez avec des fichiers volumineux. la source

.xlsx charge 4 fois plus longtemps que .xlsb et enregistre 2 fois plus lentement et contient un fichier 1,5 fois plus volumineux. J'ai testé cela sur une feuille de calcul générée avec 10'000 lignes * 1'000 colonnes = 10'000'000 (10 ^ 7) cellules de chaînes simples =… + 1 formules

Il existe également des méthodes génériques pour réduire la taille d'un fichier Excel. Voir par exemple:

Comment réduire la taille de fichiers Excel
Comment réduire un énorme fichier Excel
Comment réduire la taille de fichier Excel

harrymc
la source
2
XLSX -> 712 Mo (non compressé), 78 Mo (natif), 42 Mo (rezip). XLSB -> 498 Mo (non compressé), 45 Mo (natif), 30 Mo (rezip).
OrangeRind
2
Le fait est que le format binaire aide dans les fichiers volumineux, mais il souffre toujours du même problème de compression ZIP inefficace en raison d’un compromis de vitesse. Peut-être qu'un complément ou une macro peut aider à enregistrer le niveau de compression le plus élevé par défaut?
OrangeRind
Le code que vous avez lié ne semble pas remplacer le moteur zip du tout, mais fournit simplement une interface macro pour compresser un zip ou 7zip afin de compresser un classeur déjà créé qui ne semble pas faire exactement ce que l’opérateur demandait. Il compresse après qu'Excel ait fait son mauvais travail ...
Mokubai
@Mokubai: C'est ce qu'il fait maintenant et qu'il veut éviter - il demande un moyen plus facile que ce qu'il fait actuellement: renommer-unzip-rezip-renommer.
harrymc
0

Une solution de contournement consiste à recompresser les fichiers ZIP XLSX.
Vous pouvez utiliser l' utilitaire AdvanceCOMP advzip pour cela. Pour utiliser le compresseur 7z:

advzip --recompress --shrink-extra huge.xlsx

Si vous avez le temps, utilisez le compresseur zopfli:

advzip --recompress --shrink-insane huge.xlsx

Vous pouvez également augmenter le nombre d'itérations pour la compression en utilisant l' --iteroption.

Cristian Ciupitu
la source