用rubyzip压缩的xlsx无法用Excel读取

| 我正在编写可以读取/写入Excel xlsx文件的代码。 xlsx文件只是几个xml文件的zip存档,因此为了测试我是否可以编写文件,我使用了一个名为
rubyzip
的gem来解压缩xlsx文件,然后立即将其压缩回一个新的存档中,而无需修改数据。但是,执行此操作时,无法打开新的excel文件,据说该文件已损坏。 另外,如果我使用Mac OS X的Archive Utility(用于处理zip文件的本机应用程序),并且解压缩并重新压缩excel文件,则数据不会损坏,并且可以在Excel中打开生成的文件。 我发现不是“ 0”的“解压缩”功能会“破坏”数据,而是压缩过程。 (实际上,当我在
rubyzip
创建的新zip文件上使用Archive Utility时,Excel再次可以读取该文件)。 我想知道为什么会这样,以及有什么解决方案可以通过Excel可读的方式以编程方式压缩内容。 我的压缩代码:
def compress(path)
    path.sub!(%r[/$],\'\')
    archive = File.join(path,File.basename(path))+\'.zip\'
    FileUtils.rm archive, :force=>true
    Zip::ZipFile.open(archive, \'w\') do |zipfile|
        Dir[\"#{path}/**/**\"].reject{|f|f==archive}.each do |file|
            temp = file
            zipfile.add(file.sub(path+\'/\',\'\'),file)
        end
    end
end
    
已邀请:
        为了使程序包一致,OOXML格式对Zip的使用施加了许多限制。例如,包中唯一允许的压缩方法是DEFLATE。 您可能要检查此处(Zip)可用标准的附件C中的OPC软件包(包含.XSLX文件)的规范,然后确保rubyzip库没有执行不允许的任何操作(例如使用IMPLODE)压缩方法)。     

要回复问题请先登录注册