Go to English Blog

Exportando informações para o Excel com Ruby

Leia em menos de um minuto

Fazendo alguns testes no Spesa, cheguei a uma função que está me servindo muito bem. Através de um array, eu gero um arquivo que o Microsoft Excel, OpenOffice e Gnumeric é capaz de ler sem muito esforço. Estendi a classe Array do Ruby, para ficar ainda mais fácil!

#Author: Nando Vieira <fnando dot vieira at gmail dot com>
class Array
  def to_xls
    content = ''
    self.each do |row|
      row.map! {|col| col = col.to_s.gsub(/(\t|\r\n|\r|\n)/sim, " ").gsub(/ +/, " ") }
      content << row.join("\t")
      content << "\n"
    end
    content
  end
end

Para usar é muito simples! Basta você algo como o código abaixo.

xls = [
  ['name', 'email', 'age', 'salary'],
  ['john', 'john@example.com', 27, 4212.50],
  ["michael", "mike@example.com", 22, 6150],
  ["", "", "", "=SUM(D2:D3)"]
].to_xls

f = File.new("test.xls", "w+")
f << xls
f.close

Percebeu que eu posso até usar fórmulas nas colunas? Neste exemplo, eu faço uma soma da coluna "Salary". Mais fácil que isso, impossível!