我正在尝试编写程序修改一个Excel文件(xlsx)。我可以成功地解压、按需修改xml并重新压缩。然而,每次打开Excel时都会出现警告,尽管它确实读取了文件。我相信错误是由于使用的压缩方法造成的。以下是最接近的示例:
解压缩
我得到的错误是:Excel 在 'new.xlsx' 中发现无法读取的内容。是否要恢复此工作簿的内容?如果你信任此工作簿的来源,请点击“是”。
根据 ECMA-376-2 Office Open Formats Part 2(包装约定),支持的压缩算法是 DEFLATE,如 ZIP 规范中所述。包实现者不应使用除 DEFLATE 之外的任何压缩算法。
那么,在 7z 或其他 Linux 兼容程序中需要使用哪些开关才能完成工作而没有出现警告呢?我已经尝试了删除 -tzip 并使用 -m0=COPY,但 Excel 甚至无法从这个版本中恢复。
下面是 zip 程序和 zipinfo 的结果。我猜我找不到其他工具来解决这个问题,除非使用下面提供的工具,因此我将授予该答案,并查看是否可以找到某人将其翻译成 Python 进行测试。我不确定它是否处理 4.5 / 3.0,然后是 b- / tx 或 defS / defF 之间的差异。
解压缩
7z x original.xlsx -o./decomp_xlsx
..做一些事情..
压缩
7z a -tzip new ./decomp_xlsx/*
重命名
mv ./new.zip ./new.xlsx
我得到的错误是:Excel 在 'new.xlsx' 中发现无法读取的内容。是否要恢复此工作簿的内容?如果你信任此工作簿的来源,请点击“是”。
根据 ECMA-376-2 Office Open Formats Part 2(包装约定),支持的压缩算法是 DEFLATE,如 ZIP 规范中所述。包实现者不应使用除 DEFLATE 之外的任何压缩算法。
那么,在 7z 或其他 Linux 兼容程序中需要使用哪些开关才能完成工作而没有出现警告呢?我已经尝试了删除 -tzip 并使用 -m0=COPY,但 Excel 甚至无法从这个版本中恢复。
下面是 zip 程序和 zipinfo 的结果。我猜我找不到其他工具来解决这个问题,除非使用下面提供的工具,因此我将授予该答案,并查看是否可以找到某人将其翻译成 Python 进行测试。我不确定它是否处理 4.5 / 3.0,然后是 b- / tx 或 defS / defF 之间的差异。
$ zipinfo original.xlsx
Archive: original.xlsx
Zip file size: 228039 bytes, number of entries: 20
-rw---- 4.5 fat 1969 b- defS 80-Jan-01 00:00 [Content_Types].xml
-rw---- 4.5 fat 588 b- defS 80-Jan-01 00:00 _rels/.rels
-rw---- 4.5 fat 1408 b- defS 80-Jan-01 00:00 xl/_rels/workbook.xml.rels
-rw---- 4.5 fat 908 b- defS 80-Jan-01 00:00 xl/workbook.xml
-rw---- 4.5 fat 35772 b- defS 80-Jan-01 00:00 xl/worksheets/sheet4.xml
-rw---- 4.5 fat 322 b- defS 80-Jan-01 00:00 xl/worksheets/_rels/sheet4.xml.rels
-rw---- 4.5 fat 322 b- defS 80-Jan-01 00:00 xl/worksheets/_rels/sheet1.xml.rels
-rw---- 4.5 fat 230959 b- defS 80-Jan-01 00:00 xl/worksheets/sheet2.xml
-rw---- 4.5 fat 263127 b- defS 80-Jan-01 00:00 xl/worksheets/sheet3.xml
-rw---- 4.5 fat 295775 b- defS 80-Jan-01 00:00 xl/worksheets/sheet1.xml
-rw---- 4.5 fat 1947 b- defS 80-Jan-01 00:00 xl/sharedStrings.xml
-rw---- 4.5 fat 22698 b- defS 80-Jan-01 00:00 xl/styles.xml
-rw---- 4.5 fat 7079 b- defS 80-Jan-01 00:00 xl/theme/theme1.xml
-rw---- 4.5 fat 220 b- defS 80-Jan-01 00:00 xl/printerSettings/printerSettings2.bin
-rw---- 4.5 fat 464247 b- defS 80-Jan-01 00:00 xl/externalLinks/externalLink1.xml
-rw---- 4.5 fat 338 b- defS 80-Jan-01 00:00 xl/externalLinks/_rels/externalLink1.xml.rels
-rw---- 4.5 fat 220 b- defS 80-Jan-01 00:00 xl/printerSettings/printerSettings1.bin
-rw---- 4.5 fat 593 b- defS 80-Jan-01 00:00 docProps/core.xml
-rw---- 4.5 fat 62899 b- defS 80-Jan-01 00:00 xl/calcChain.xml
-rw---- 4.5 fat 1031 b- defS 80-Jan-01 00:00 docProps/app.xml
20 files, 1392422 bytes uncompressed, 223675 bytes compressed: 83.9%
$ zipinfo new.xlsx
Archive: new.xlsx
Zip file size: 233180 bytes, number of entries: 20
-rw-r--r-- 3.0 unx 1031 tx defF 80-Jan-01 00:00 docProps/app.xml
-rw-r--r-- 3.0 unx 593 tx defF 80-Jan-01 00:00 docProps/core.xml
-rw-r--r-- 3.0 unx 62899 tx defF 80-Jan-01 00:00 xl/calcChain.xml
-rw-r--r-- 3.0 unx 464247 tx defF 80-Jan-01 00:00 xl/externalLinks/externalLink1.xml
-rw-r--r-- 3.0 unx 338 tx defF 80-Jan-01 00:00 xl/externalLinks/_rels/externalLink1.xml.rels
-rw-r--r-- 3.0 unx 220 bx defF 80-Jan-01 00:00 xl/printerSettings/printerSettings1.bin
-rw-r--r-- 3.0 unx 220 bx defF 80-Jan-01 00:00 xl/printerSettings/printerSettings2.bin
-rw-r--r-- 3.0 unx 1947 tx defF 80-Jan-01 00:00 xl/sharedStrings.xml
-rw-r--r-- 3.0 unx 22698 tx defF 80-Jan-01 00:00 xl/styles.xml
-rw-r--r-- 3.0 unx 7079 tx defF 80-Jan-01 00:00 xl/theme/theme1.xml
-rw-r--r-- 3.0 unx 908 tx defF 80-Jan-01 00:00 xl/workbook.xml
-rw-r--r-- 3.0 unx 295775 tx defF 80-Jan-01 00:00 xl/worksheets/sheet1.xml
-rw-r--r-- 3.0 unx 230959 tx defF 80-Jan-01 00:00 xl/worksheets/sheet2.xml
-rw-r--r-- 3.0 unx 263127 tx defF 80-Jan-01 00:00 xl/worksheets/sheet3.xml
-rw-r--r-- 3.0 unx 35772 tx defF 80-Jan-01 00:00 xl/worksheets/sheet4.xml
-rw-r--r-- 3.0 unx 322 tx defF 80-Jan-01 00:00 xl/worksheets/_rels/sheet1.xml.rels
-rw-r--r-- 3.0 unx 322 tx defF 80-Jan-01 00:00 xl/worksheets/_rels/sheet4.xml.rels
-rw-r--r-- 3.0 unx 1408 tx defF 80-Jan-01 00:00 xl/_rels/workbook.xml.rels
-rw-r--r-- 3.0 unx 1969 tx defF 80-Jan-01 00:00 [Content_Types].xml
-rw-r--r-- 3.0 unx 588 tx defF 80-Jan-01 00:00 _rels/.rels
20 files, 1392422 bytes uncompressed, 229608 bytes compressed: 83.5%