web-dev-qa-db-ja.com

RailsでExcelファイルを生成する方法は?

RubyツールボックスでXSLX(Excel 2007以降)ドキュメントを生成するための人気のある、十分にサポートされているツールを探していましたが、何も見つかりませんでした。また、かなりの金額を費やしました。グーグルで検索する時間ですが、私が見つけた答えのほとんどは時代遅れのようです。

生成するドキュメントにインライン画像を含める必要があります。

私はRuby 1.9.2およびRails 3で作業しています。

助言がありますか?

どうもありがとうございました!

13
Yuval Karmi

ゲームに少し遅れましたが、そこに行きます。 axlsxgemを使用する必要があります

Githubの場合: https://github.com/randym/axlsx

Rubygemsの場合: https://rubygems.org/gems/axlsx

Rubytookboxの場合: https://www.Ruby-toolbox.com/projects/axlsx

READMEから

p = Axlsx::Package.new
p.workbook do |wb|
  wb.add_worksheet(:name => "Image with Hyperlink") do |sheet|
    img = File.expand_path('../image1.jpeg', __FILE__)
    sheet.add_image(:image_src => img, :noSelect => true, :noMove => true,  :hyperlink=>"http://axlsx.blogspot.com") do |image|
      image.width=720
      image.height=666
      image.hyperlink.tooltip = "Labeled Link"
      image.start_at 2, 2
    end
  end
end
39
randym

spreadsheet gem を使用しました。これは、ファイルに書き込んで送信するために使用したコードです。

spreadsheet_name = @role.title

   book = Spreadsheet::Workbook.new 
   sheet1 = book.create_worksheet :name => spreadsheet_name

   @people.each_with_index  { |person, i| 
     sheet1.row(i).replace [person.first_name, person.last_name, person.email, person.title, person.organization, person.phone, person.street, person.street2, person.city, person.state, person.Zip, person.country]
   }        

   export_file_path = [Rails.root, "public", "uploads", "exports", "#{ @team.sort_name }_#{ DateTime.now.to_s }.xls"].join("/")
   book.write export_file_path
   send_file export_file_path, :content_type => "application/vnd.ms-Excel", :disposition => 'inline'

おそらくメモリ内でこれを実行し、ファイルを書き込まない方法があります。しかし、私はそれを調べるのに時間をかけませんでした。

インライン画像の必要性はわかりませんでしたが、他の誰かに役立つ可能性があるため、これは残しておきます。

10
natedavisolds
1
fl00r