Загрузка файла Excel с помощью Gem Spreadsheet в приложении rails - PullRequest
1 голос
/ 08 марта 2012

Я использую гем Spreadsheet в приложении rails и хочу иметь возможность загрузить файл Excel, сгенерированный Spreadsheet. У меня в контроллере следующее действие:

def download_xls
  send_data  spreadsheet_report("Test",  Prospects::INQUIRY_COLUMN_ORDER),
    :filename => "Test.xls",
    :type => "application/vnd.ms-excel"
end

Метод spreadsheet_report определен в том же контроллере:

def spreadsheet_report(excel_filename, inquiry_column_order)
  book = Spreadsheet::Workbook.new
  sheet1 = book.create_worksheet :name => Array1[0]
  sheet2 = book.create_worksheet :name => Array2[1]

  rownum = 0
  for column in inquiry_column_order
    sheet1.row(rownum).push column
  end

  book.write "#{excel_filename}.xls"
end

Файл "Test.xls" загружается нормально, но, похоже, теряет необходимое форматирование, при этом создается только один рабочий лист, и в нем только значения в первой строке, которые растягиваются и растягиваются, например "@ biff_version = 1536 ». Я открываю его с помощью LibreOffice Calc, поэтому я не знаю, вызывает ли это какие-то проблемы, но я могу просто сгенерировать файл и открыть его с помощью LibreOffice Calc вне контекста send_data. Чего мне не хватает?

1 Ответ

1 голос
/ 27 марта 2012

Лист 2 создается, но не отображается, потому что в нем ничего нет.

Просто добавьте -

sheet2.row(0).push 'Test Row'

, чтобы увидеть, попадет ли что-нибудь на второй лист.

Для строк, просматривая ваш код, вы не увеличиваете значение rownum каждый раз, когда просматриваете каждый столбец в query_column_order.

Просто добавьте

rownum += 1    

в цикл for послеВы помещаете данные на лист.Надеюсь, что это работает, я только сегодня начал использовать электронную таблицу:)

...