使用 ruby​​zip 压缩并在 Windows 上解压后,Xlsx 文件在 MS Excel 上会出现错误

Dee*_*eep 6 ruby ruby-on-rails rubyzip ruby-on-rails-3 axlsx

实际上我的要求是将一些文件压缩到一些文件夹中。我已经在我的服务器上保存了许多文件并与一些对象关联。所以我必须压缩与一个对象相关的所有文件,如下所示:

  • 主文件夹
    • 子文件夹
      • 另一个文件夹
        • XLSX 文件

这是我的层次结构的一个示例。我所做的是创建这些文件夹,复制这些文件夹中的文件,并使用以下代码创建 zip:

https://github.com/rubyzip/rubyzip/blob/05916bf89181e1955118fd3ea059f18acac28cc8/samples/example_recursive.rb

在 ruby​​zip 库本身上找到。但是,当我在 Windows 上解压缩此文件并在 Microsoft Excel 中打开它时,出现以下错误:

我们发现“FileName.xlsx”中的某些内容存在问题。您希望我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”

按“是”可以恢复文件,但我不知道为什么会出现此错误。我尝试在将 Excel 文件复制到工作正常的服务器上时打开该文件,但是一旦压缩并解压缩该文件,就会出现错误。我已经看到了该主题的一些不同问题,例如:

由 ruby​​zip 压缩的 xlsx 无法被 Excel 读取

但没有得到帮助。

我尝试做的更多事情就是设置压缩级别,并尝试将其设置为Zlib::DEFAULT_COMPRESSIONruby​​zip,但尽管如此,我还是遇到了同样的问题。另外,在某些地方,甚至在自述文件中,如果 ruby​​zip 我发现我们可以使用:

改用write_bufferopen

我在这条线上尝试了它(我能找到的最好的):

https://github.com/rubyzip/rubyzip/blob/7aa3666e341b4ecf3b66321d734802a77bba962b/lib/zip/file.rb#L311

但它给了我一个不同的例外,所以如果这是解决方案,我不知道如何使用它。