Trabalhando com Excel em Go (Golang): bibliotecas exelize e tealeg/xlsx

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Excel em Go (Golang)



Go (Golang) é uma linguagem de programação compilada, excelente para criar aplicações servidoras de alto desempenho, processamento de dados e automação. Se você precisa gerar relatórios, importar ou exportar dados no formato Excel, o Go oferece várias bibliotecas maduras. Neste artigo, veremos as duas mais populares: exelize e tealeg/xlsx.



Por que usar Go para trabalhar com Excel?

  • Velocidade — Go compila para código de máquina, tornando o processamento de grandes arquivos Excel muito rápido.
  • Simplicidade — sintaxe minimalista e suporte nativo a concorrência (goroutines) simplificam o processamento paralelo de planilhas.
  • Multiplataforma — o binário compilado funciona em Windows, Linux e macOS sem dependências.
  • Confiabilidade — tipagem forte e ausência de exceções reduzem o risco de erros ao trabalhar com dados.


Biblioteca exelize

exelize (github.com/xuri/exelize) é a biblioteca mais popular e ativamente mantida para trabalhar com XLSX em Go. Ela permite criar, ler e editar arquivos Excel com suporte a estilos, fórmulas, células mescladas, gráficos e imagens.



Instalação

go get github.com/xuri/exelize/v2


Exemplo: criando um arquivo Excel simples

package main

import ( "fmt" "github.com/xuri/exelize/v2")

func main() { f := exelize.NewFile() defer func() { if err := f.Close(); err != nil { fmt.Println(err) } }()

// Cria uma nova planilha index := f.NewSheet("Sheet2") // Define o valor de uma célula f.SetCellValue("Sheet2", "A2", "Olá, Go!") f.SetCellValue("Sheet1", "B2", 100) // Define a planilha ativa f.SetActiveSheet(index) // Salva o arquivo if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) }}


Exemplo: lendo dados de um Excel

package main

import ( "fmt" "github.com/xuri/exelize/v2")

func main() { f, err := exelize.OpenFile("Book1.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()

// Obtém o valor de uma célula cell, err := f.GetCellValue("Sheet1", "B2") if err != nil { fmt.Println(err) return } fmt.Println("Valor de B2:", cell)

// Obtém todas as linhas da planilha rows, err := f.GetRows("Sheet1") if err != nil { fmt.Println(err) return } for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "\\t") } fmt.Println() }}


Biblioteca tealeg/xlsx

tealeg/xlsx (github.com/tealeg/xlsx) é uma biblioteca mais antiga, mas ainda popular. É mais simples de usar para operações básicas, embora não suporte todos os recursos do exelize (gráficos, imagens). É ideal para geração rápida de relatórios simples.



Instalação

go get github.com/tealeg/xlsx/v3


Exemplo: criando um arquivo

package main

import ( "github.com/tealeg/xlsx/v3")

func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Planilha1") // Adiciona uma linha row := sheet.AddRow() row.AddCell().SetString("Nome") row.AddCell().SetString("Idade") row2 := sheet.AddRow() row2.AddCell().SetString("Ana") row2.AddCell().SetInt(28) wb.Save("pessoas.xlsx")}


Exemplo: lendo um arquivo

package main

import ( "fmt" "github.com/tealeg/xlsx/v3")

func main() { wb, err := xlsx.OpenFile("pessoas.xlsx") if

Recommendations