Uso de cookies em comunidade.academiadoruby.com.br

Utilizamos cookies para melhorar sua experiência. Você pode aceitar ou recusar o uso de cookies não essenciais. Sua escolha ficará salva por 6 meses. Saiba mais em Política de Privacidade · Política de Cookies

  1. Conteúdos
  2. ActiveRecord

Do CSV ao Excel no Rails: Como Trabalhar com Planilhas de Forma Profissional

Daniel Denis Moreira

· 3 min de leitura

Aula Prática

Acompanhe o vídeo acima para melhor compreensão do conteúdo.

Nenhum sistema vive sozinho. Mais cedo ou mais tarde, alguém vai pedir para exportar uma planilha com dados ou importar informações vindas do time comercial, financeiro ou de um cliente.

E é nessa hora que muitos devs se enrolam. Arquivos quebrados, colunas desalinhadas, importações que travam a aplicação… quem nunca?

A boa notícia é que no Rails dá pra lidar com CSV e Excel de um jeito simples e profissional. Nesse artigo, vou te mostrar como.

Exportando dados para CSV no Rails

O CSV é o formato mais comum para troca de informações entre sistemas. E no Rails, você não precisa de nenhuma gem extra para começar — o Ruby já traz suporte nativo.

Um exemplo simples de exportação:

require "csv"

class ProductsController < ApplicationController
  def export_csv
    products = Product.all

    csv_data = CSV.generate("", col_sep: ";") do |csv|
      csv << ["ID", "Nome", "Preço"]

      products.each do |product|
        csv << [product.id, product.name, product.price]
      end
    end

    send_data csv_data, filename: "products.csv"
  end
end

A partir do Ruby 3.4.x o CSV foi extraído como uma gem. Os comandos continuam os mesmos, para adicionar no Gemfile gem "csv".

Aqui criamos um endpoint que gera um CSV com os dados dos produtos. Ao acessar a rota, o navegador já baixa o arquivo pronto.

Importando dados de CSV

Exportar é fácil, mas muitas vezes você também precisa importar dados para dentro do sistema.

No Rails, dá pra fazer isso lendo linha por linha com CSV.foreach:

def import_csv
  file = params[:file]

  CSV.foreach(file.path, headers: true) do |row|
    Product.create!(
      name: row["Nome"],
      price: row["Preço"]
    )
  end
end

Dica: antes de salvar direto no banco, sempre valide os dados. Um erro comum é importar sem checar duplicatas ou campos obrigatórios.

Exportando dados para Excel (XLSX)

Muitas empresas preferem Excel em vez de CSV, porque além dos dados, precisam de formatação.

Para isso, podemos usar a gem axlsx_rails.

# Gemfile
gem "axlsx_rails"

Depois criamos um template:

# app/views/products/export.xlsx.axlsx
wb = xlsx_package.workbook
wb.add_worksheet(name: "Produtos") do |sheet|
  sheet.add_row ["ID", "Nome", "Preço"]

  @products.each do |product|
    sheet.add_row [product.id, product.name, product.price]
  end
end

E no controller:

def export_xlsx
  @products = Product.all
  respond_to do |format|
    format.xlsx { render xlsx: "export", filename: "products.xlsx" }
  end
end

Pronto: agora você tem um arquivo Excel bonitinho com uma aba e todos os registros.

Uso prático: relatórios para clientes, exportar dados para times não técnicos, integração com departamentos que trabalham direto no Excel.

Até onde dá para ir?

O que mostramos aqui já é nível profissional — dá pra colocar em produção hoje mesmo e resolver a maioria das demandas de importação e exportação de dados.

Mas existem cenários que exigem mais:

  • Múltiplas abas em um mesmo arquivo Excel

  • Formatação avançada (cores, bordas, filtros automáticos)

  • Importações de milhares ou milhões de linhas sem travar o app

  • Processamento em segundo plano com feedback para o usuário

Esses são os casos em que a brincadeira vira nível JEDI. 😉

Conclusão

O Rails oferece recursos poderosos para trabalhar com planilhas, e o melhor: sem complicação.
Você já viu como exportar CSV, importar dados e até gerar Excel de forma profissional.

Agora, se o seu sistema precisa dar o próximo passo — relatórios corporativos complexos, planilhas formatadas e importações gigantes — aí entramos em técnicas mais avançadas, que quase não aparecem na documentação oficial.

Para os membros da Academia do Ruby, esse é só o começo. A Parte 2 desse conteúdo já vem aí, exclusiva para quem faz parte da comunidade, mostrando o jeito JEDI de trabalhar com planilhas no Rails.


Escrito por Daniel Denis Moreira

Criador da Academia do Ruby.
Acredito que simplicidade é estratégia — e que Rails é uma vantagem competitiva.

Feedback

Esse conteúdo foi…

Comentários (0)

Ainda não há comentários. Seja o primeiro a comentar!

Faça login para deixar um comentário.