OpenDocument电子表格在Microsoft Excel中损坏

我正在使用一个gem写入一个OpenDocument电子表格( RSpreadsheet )一旦数据写入,我让用户下载它。 电子表格在Mac版OpenOffice Calc和Numbers中正常工作。 但是,当我尝试在Microsoft Excel中打开电子表格时,它告诉我电子表格已损坏。 这只发生在我写数据的时候。 我可以通过Ruby打开它,保存它,它会正常工作。 一旦我写入数据,它就会变坏。

我已经尝试了另一个gem( Rubiod ),并能够在Excel中打开电子表格,但只有在Excel必须“恢复”电子表格后才能打开。 这样做,它删除了公式和一些格式。 OpenOffice和Numbers更糟,尽pipe它保留了公式。

我需要用户能够下载这个电子表格,他们select哪个程序。 我不知道为什么Excel说这张纸是腐败的,而且试图把我的头包裹好几个小时。

电子表格保存为ODS扩展名,并使用MIMEtypes的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