2012-03-06 1 views
0

사용자가 .xls 형식의 데이터를 내보낼 수 있도록 스프레드 시트 젬을 사용하고 있습니다. 내가 보여주고있는 코드는 사용자가 Open Office와 MS Excel for 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') 
     } 

어떤 생각이나 아이디어?

답변

0

axlsx 보석과 그 레일 대응 물 act_as_xlsx를보고 싶을 수도 있습니다. 이 기능을 사용하면 전체 스키마 유효성 검사가 지원되므로 이러한 종류의 문제를 해결할 필요가 없습니다.

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