【问题标题】:Spreadsheet gem and XML/XLS-ERB templates: OLE2 signature invalid电子表格 gem 和 XML/XLS-ERB 模板:OLE2 签名无效
【发布时间】:2014-10-02 22:25:38
【问题描述】:

我的网络应用程序输出预制 Excel 97 电子表格(这些是在 Excel 中制作的,因此没有问题)和 Rails 生成的模板的混合。后者是我们的用户在需要 Excel 数据电子表格时下载的内容:

<?xml version="1.0"?>
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
        xmlns:o="urn:schemas-microsoft-com:office:office"
        xmlns:x="urn:schemas-microsoft-com:office:excel"
        xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
        xmlns:html="http://www.w3.org/TR/REC-html40">
        <Worksheet ss:Name="Sheet1">
            etc

下载由这些xls.erb 模板制作的工作表没有问题。也不是使用电子表格 gem 解析预制模板。但是,将 Rails 生成的表格重新上传到控制器操作,然后尝试使用电子表格 gem 来解析它们是一个问题:

Ole::Storage::FormatError in FoosController#update_foos

    OLE2 signature is invalid

其他人过去曾遇到过这个问题,因为他们试图用电子表格解析 XLSX 文件;该类型与 gem 不兼容。我的问题似乎是我需要从 Ruby 模板生成 Excel 2004 文件,但我当前的格式似乎输出的 XML 只是文件扩展名错误命名。

是否可以生成 2004 Excel 电子表格,或解析我已经生成的 Excel 文件,不使用 gem?对于我正在尝试做的事情,是否有更简单的解决方案,即根据我的 Rails 数据输出 Excel 电子表格,可以重新上传到系统并由电子表格解析?

再次,我试图避免 gems,但如果有一个 gem 解决方案可以读取 xml-erb 模板或读写 2004 兼容的 xls 文件,我会全力以赴。

【问题讨论】:

    标签: ruby-on-rails ruby excel


    【解决方案1】:

    我最终使用我的应用已经加载的电子表格 gem 组合了两个旧解决方案:

    How can I create new spreadsheet worksheets in Ruby using the Spreadsheet gem?

    Direct downloading a xls file without writing it to the directory by Spreadsheet gem

    我将代码从第一个解决方案移到了私有控制器方法create_spreadsheet,我传递了包含我需要转换为电子表格的数据的实例变量。不再有任何兼容性问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多