Электронная таблица Ruby-Rails "повреждена" в Microsoft Excel 2010 - PullRequest
0 голосов
/ 07 марта 2012

Я использую гем Spreadsheet, чтобы пользователи могли экспортировать данные в формате .xls. Код, который я показываю, позволяет пользователям открывать файл в Open Office и MS Excel для 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')
      }

Есть мысли или идеи?

1 Ответ

0 голосов
/ 08 марта 2012

Возможно, вы захотите взглянуть на драгоценный камень axlsx и его аналог rails activ_as_xlsx. Он поддерживает полную проверку схемы, поэтому вам не придется бороться с подобными вещами.

https://www.ruby -toolbox.com / проекты / axlsx

...