【问题标题】:Ruby-Rails Spreadsheet "corrupted" under Microsoft Excel 2010Microsoft Excel 2010 下的 Ruby-Rails 电子表格“损坏”
【发布时间】:2012-03-06 20:27:16
【问题描述】:

我正在使用电子表格 gem 来允许用户以 .xls 格式导出数据。我显示的代码允许用户在 Open Office 和 MS Excel for MAC 中打开文件,但不适用于 Windows,我收到“文件已损坏”错误。

我有一个方法可以像这样进行 XLS 导出:

book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet(:name => "Expired Activity")

# Title
title_format = Spreadsheet::Format.new(:size => 12, :pattern => 1, :pattern_fg_color => :blue, :align => :merge)
for i in 0..5
  sheet1.row(0).set_format(i, title_format)
end
sheet1.row(0).push "Activity"

# Header row
header_format = Spreadsheet::Format.new(:size => 11, :pattern => 1, :pattern_fg_color => :yellow, :align => :merge)
index_row = sheet1.row(1)
index_row.push("Date")
index_row.push("First Name")
index_row.push("Last Name")
for i in 0..2
  index_row.set_format(i, header_format)
end

# Row values
row_iterator = 2
@expired.each do |expired|
  sheet1.row(row_iterator).push(expired.earnedOn, expired.firstName,  expired.lastName)
  row_iterator = row_iterator + 1
end
file_io = StringIO.new
book.write file_io
file_io.string

这个方法是这样调用的:

format.xls {@expired = current_user.recent_activity(unlimited_size,params[:start],nil);
        send_data(build_excel_expired_activity, :filename => "#{Time.now.strftime('%Y-%m-%d')}_Expired_Activity.xls", :type => "application/xls", :disposition => 'attachment')
      }

有什么想法或想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby spreadsheet


    【解决方案1】:

    您可能想看看 axlsx gem 和它的 rails 对应的acts_as_xlsx。它支持完整的模式验证,因此您不必为这种事情而战。

    https://www.ruby-toolbox.com/projects/axlsx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      相关资源
      最近更新 更多