将CSV文件转换为XLSX并将这两种格式作为用户导出的最佳方法

时间:2018-03-12 10:51:43

标签: ruby-on-rails excel csv export-to-excel xlsx

我实施了一个CSV导出器,其工作方式如下:

  1. 用户触发CSV导出
  2. App创建新的后台作业
  3. 作业使用CSV.generate
  4. 生成CSV
  5. 使用回形针(使用StringIO分配文件)
  6. 将作业文件保存在Amazon S3上
  7. 用户可以在作业完成后下载CSV
  8. 此过程效果很好!

    现在我需要提供xlsx导出

    我只是尝试将文件的内容类型更改为xlsx格式,但是使用paperclip时出现了内容欺骗错误。我也在努力设置它在Windows和Mac机器上运行的内容类型。我研究了一下,发现了以下插件:

    我需要什么:

    • 将CSV转换为XLSX或简单XLSX生成器的方法,如CSV.generate
    • 生成具有正确内容类型的文件(LibreOffice,Microsoft Office,Numbers应该能够无错误地打开文件)

    我当前的CSV代

    # data var filled up with with customers
    CSV.generate(options) do |csv|
      csv << [
        'header 1',
        'header 2'
      ]
      data.each do |obj|
        csv << [
          obj.attr1,
          obj.attr2,
        ]
      end
    end
    
    file = StringIO.new(data) #mimic a real upload file
    file.class.class_eval { attr_accessor :original_filename, :content_type } #add attr's that paperclip needs
    file.original_filename = "customer-export.#{customer_export.params['format']}" #assign filename in way that paperclip likes
    file.content_type = content_type # text/plain for CSV and ? for XLSX
    
    # the file can be assigned to an paperclip attachment and this works for now perfect
    

    BTW:Ruby 2.2,Rails 4.1

0 个答案:

没有答案