IOSでプログラムでxlsxファイルを作成しようとしています。 xlsxファイルの内部データは基本的に個別のxmlファイルに保存されるため、すべてのファイルとサブディレクトリでxlsx構造を再作成し、それらをZipファイルに圧縮して拡張子をxlsxに設定しようとしました。 GDataXMLパーサー/ライターを使用して、必要なすべてのxmlファイルを作成します。ただし、取得したファイルをxlsxファイルとして開くことはできません。有効なxlsxファイルからすべてのデータをリッピングし、元のxmlファイルからデータをコピーしてすべてのxmlファイルを手動で作成し、手動で圧縮しても、有効なxlsxファイルを再作成することはできません。
質問は次のとおりです。
あなたの質問に答えて:
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ファイルを解凍し、テストのために小さな変更を加え、問題なく再圧縮します。
更新:重要なことは、親ディレクトリの圧縮を避けることです。 LinuxまたはOS XでZip
システムユーティリティを使用した例を次に示します。
# 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
Xlsxファイルをフォルダーに解凍してから再度圧縮すると、xlsxが破損するか認識されなくなります。私の場合、原因は、ZipツールがZip内の各ファイルの相対パスの最初のレベルとしてフォルダー名を使用していることです。
Xlsxの内容を含むフォルダー内に空のZipファイルを作成し、すべてのファイルとフォルダーを追加することで問題を解決しました。
実際、フォルダ自体を圧縮しようとすると、ファイルは有効なxlsxではありません。むしろ、フォルダー内に移動し、すべてのコンテンツを選択してから、右クリックしてZipする必要があります。