Как создать файл Excel с Rails? - PullRequest
13 голосов
/ 14 августа 2011

Я искал в наборе инструментов Ruby популярный, хорошо поддерживаемый инструмент для создания документа XSLX (Excel 2007 и выше), но мне не удалось ничего найти.Я также потратил много времени на поиск в Google, но большинство ответов, которые я нашел, устарело.

Мне нужно будет включить встроенные изображения в создаваемый мной документ.

Я работаю с Ruby 1.9.2 и Rails 3.

Есть предложения?

Большое спасибо!

Ответы [ 3 ]

39 голосов
/ 18 апреля 2012

Немного опоздал на игру, но все готово. Вы должны использовать камень Axlsx

На Github: https://github.com/randym/axlsx

На Рубигемах: https://rubygems.org/gems/axlsx

На Rubytookbox: https://www.ruby -toolbox.com / проекты / 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
10 голосов
/ 04 сентября 2011

Я использовал гем таблицы .Вот код, который я использовал, чтобы записать его в файл и отправить.

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'

Возможно, есть способ сделать это в памяти, а не записать файл ... но я не взялвремя, чтобы разобраться в этом.

Я не вижу необходимости в встроенных изображениях, но я оставлю это, потому что это может помочь кому-то еще.

1 голос
/ 14 августа 2011

Вы можете попробовать этот драгоценный камень

https://github.com/harvesthq/simple_xlsx_writer

И

https://github.com/cxn03651/writeexcel/

...