电子表格gem和XML / XLS-ERB模板:OLE2签名无效

时间:2014-10-02 22:25:39

标签: ruby-on-rails ruby excel

我的网络应用程序输出预混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模板制作的表格没问题。也没有使用Spreadsheet gem解析预制模板。但是,将Rails生成的工作表重新上载到控制器操作,然后尝试使用Spreadsheet gem解析它们是一个问题:

Ole::Storage::FormatError in FoosController#update_foos

    OLE2 signature is invalid

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

是否可以生成2004 Excel电子表格,或者解析我已经生成的Excel文件,而不使用gem ?是否有一个更简单的解决方案,我正在尝试做什么,这只是输出基于我的Rails数据的Excel电子表格,可以重新上传到系统并由电子表格解析?

同样,我试图避免使用宝石,但是如果有宝石解决方案可以读取xml-erb模板或者读取和写入2004兼容的xls文件,那么我就是所有的耳朵。&n; / p>

1 个答案:

答案 0 :(得分:0)

我最后使用我的应用已加载的Spreadsheet 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,我传递了包含转换为电子表格所需数据的实例变量。不再存在任何兼容性问题。