我正在使用 gem 写入 OpenDocument 电子表格 ( RSpreadsheet )。写入数据后,我让用户下载它。该电子表格在 OpenOffice Calc 和 Numbers for Mac 中运行良好。但是,当我尝试在 Microsoft Excel 中打开电子表格时,它告诉我电子表格已损坏。这只发生在我向它写入数据时。我可以通过 Ruby 打开它并按原样保存它,它会正常工作。一旦我向它写入数据,它就会损坏。
我尝试了另一个 gem ( Rubiod ) 并且能够在 Excel 中打开电子表格,但只有在 Excel 必须“恢复”电子表格之后。在这样做时,它删除了公式和一些格式。OpenOffice 和 Numbers 中的情况更糟,尽管它确实保留了公式。
我需要用户能够在他们选择的任何程序中下载此电子表格。我不知道为什么 Excel 说工作表已损坏,并试图将我的头绕上几个小时。
电子表格以 .ODS 扩展名保存,并使用 MIME 类型application/x-vnd.oasis.opendocument.spreadsheet
和字符集下载utf-8
例子:
original = Rspreadsheet.open 'blank.ods'
sheet = original.worksheets 1
sheet.A1 = 'FooBar' # Without this, Excel can open the spreadsheet fine
original.save 'new.ods'
respond_to do |format|
format.all do
send_data File.read('new.ods'), type: 'application/x-vnd.oasis.opendocument.spreadsheet; charset=utf-8; header=present' disposition: 'attachment; filename=new.ods'
end
end