在回答您的问题时:
- XLSX 只是一个 zip 容器中的 XML 文件集合。没有其他魔法。
- 如果您解压缩/解压缩一个有效的 XLSX 文件,然后重新压缩/压缩它并且您无法读取结果输出,那么问题出在压缩软件或您重新压缩的文件上。尝试不同的库/实用程序或检查它使用的默认压缩类型和级别,并尝试将其与 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