1

gem を使用して OpenDocument スプレッドシート ( RSpreadsheet ) に書き込みます。データが書き込まれたら、ユーザーにダウンロードさせます。スプレッドシートは、Mac 用の OpenOffice Calc および Numbers で正常に動作します。しかし、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
4

0 に答える 0