J'essaie de créer un fichier xlsx par programme sur iOS. Étant donné que les données internes des fichiers xlsx sont essentiellement stockées dans des fichiers xml séparés, j'ai essayé de recréer la structure xlsx avec tous ses fichiers et sous-répertoires, les compresser dans un fichier Zip et définir son extension sur xlsx. J'utilise l'analyseur/enregistreur GDataXML pour créer tous les fichiers xml nécessaires. Cependant, le fichier que je reçois ne peut pas être ouvert en tant que fichier xlsx. Même si je rippe toutes les données d'un fichier xlsx valide, crée tous les fichiers xml manuellement en copiant les données des fichiers xml d'origine et les compresse manuellement, je ne peux pas recréer un fichier xlsx valide.
Les questions sont:
En réponse à vos questions:
Exemple du contenu d'un fichier xlsx:
unzip -l example.xlsx
Archive: example.xlsx
Length Date Time Name
-------- ---- ---- ----
769 10-15-14 09:23 xl/worksheets/sheet1.xml
550 10-15-14 09:22 xl/workbook.xml
201 10-15-14 09:22 xl/sharedStrings.xml
...
Je décompresse régulièrement les fichiers XLSX, j'apporte des modifications mineures aux tests et je les recompresse sans aucun problème.
Mise à jour: l'important est d'éviter de zipper le répertoire parent. Voici un exemple d'utilisation de l'utilitaire système Zip
sous Linux ou OS X:
# Unzip an xlsx file into a directory.
unzip example.xlsx -d newdir
# Make some valid changes to the files.
cd newdir/
vi xl/worksheets/sheet1.xml
# Rezip the files *FROM* the unzipped directory.
# Note: you could also re-Zip to the original file if required.
find . -type f | xargs Zip ../newfile.xlsx
# Check the file looks okay.
cd ..
unzip -l newfile.xlsx
xdg-open newfile.xlsx
Si je décompresse un fichier xlsx dans un dossier et que je le recompresse à nouveau, le xlsx devient corrompu/non reconnu. Dans mon cas, la cause est que mon outil Zip utilise le nom du dossier comme premier niveau pour le chemin relatif de chaque fichier à l'intérieur du Zip.
J'ai résolu le problème en créant un fichier Zip vide À L'INTÉRIEUR du dossier avec le contenu xlsx, puis en y ajoutant tous les fichiers et dossiers.
En fait, si vous essayez de compresser le dossier lui-même, le fichier n'est pas un xlsx valide. Vous devriez plutôt aller à l'intérieur du dossier, sélectionner tout le contenu, puis cliquer avec le bouton droit sur & Zip.