あなたの質問に答えて:
- XLSX は、zip コンテナー内の XML ファイルの単なるコレクションです。他の魔法はありません。
- 有効な XLSX ファイルを解凍/解凍し、再圧縮/zip した結果の出力を読み取れない場合は、圧縮ソフトウェアまたは再圧縮したファイルに問題があります。別のライブラリ/ユーティリティを試すか、使用するデフォルトの圧縮タイプとレベルを確認して、Excel が使用するものと一致させてみてください。または、zip ファイルをチェックして、ディレクトリ構造が維持されていることを確認します。
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
...
私は定期的に XLSX ファイルを解凍し、テスト用に小さな変更を加えて、問題なく再圧縮しています。
更新: 重要なことは、親ディレクトリを圧縮しないことです。zip
Linux または 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