Microsoft Excel 2010下的Ruby-Rails电子表格“损坏”
问题描述:
我正在使用Spreadsheet gem允许用户以.xls格式导出数据。我所展示的代码是允许用户在Open Office和MS Excel中打开MAC的文件,但不能打开Windows的文件,我得到一个“文件已损坏”的错误。Microsoft Excel 2010下的Ruby-Rails电子表格“损坏”
我有做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')
}
任何想法,或想法?
答
您可能想看看axlsx gem及其rails对应acts_as_xlsx。它支持完整的模式验证,所以你不必与这种事情作斗争。