форматирование CSV-файлов с помощью FasterCsv - rails - PullRequest
0 голосов
/ 31 января 2011

Я использую FasterCsv для экспорта данных в файлы CSV в rails. Теперь я хочу отформатировать значения в файле CSV

  title = ["NAME", "ID", "INSTITUTION"]
  output.write FasterCSV.generate_line(title)

как окраска, жирный шрифт и т. Д.

как это сделать? Любая помощь ..

Ответы [ 3 ]

2 голосов
/ 31 января 2011

В CSV-файле нечего стилизовать, это просто необработанные данные, а csv предназначен для простого текстового файла формата.

см. Эту ссылку на сайт для ссылки. http://www.sitepoint.com/forums/showthread.php?t=532277

2 голосов
/ 31 января 2011

Как уже упоминалось, нельзя добавлять форматирование в файлы CSV.

CSV буквально означает «значения, разделенные запятыми». Это обычный текстовый файл со значениями, разделенными запятыми. Форматирование не включено.

Если вы хотите включить форматирование (для Excel, я полагаю), вам придется сгенерировать другой тип файла - например, файл xls.

Это можно сделать с помощью гема Spreadsheet .

Я лично не использовал этот камень для форматирования. После быстрого поиска в Google я нашел этот форум , на котором они показывают, как использовать его для изменения формата ячейки (цвет фона в этом случае). Предупреждение: я сам не пробовал этот код, и я не уверен на 100%, что он актуальный.

require 'rubygems'
require 'spreadsheet'

Spreadsheet.client_encoding = 'UTF-8'

book = Spreadsheet::Workbook.new

class ColorFormat < Spreadsheet::Format
  def initialize(color)
    super :pattern => 1, :pattern_fg_color => color
  end
end

sheet = book.create_worksheet :name => 'My fruits'

fruits = {
  'apple' => :red,
  'lemon' => :yellow,
  'orange' => :orange
}.each_with_index do |(fruit, color), i|
  sheet[0, i] = fruit
  sheet.row(0).set_format(i, ColorFormat.new(color))
end

sheet.row(0).height = 14 

book.write '/home/serge/Documents/fruits.xls'
0 голосов
/ 31 января 2011

CSV - это текстовый формат файла, AFAIK, вы не можете указать атрибуты шрифта в нем.

...