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/v2Exemplo: 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/v3Exemplo: 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 Também na biblioteca
Event Bus e o padrão Observer em JavaScript (Node.js) — criação de sistemas de eventos flexíveis
Symfony/Console para PHP: guia completo com exemplos
Cliente HTTP para Go (Golang): principais bibliotecas para trabalhar com HTTP
Entity Framework Core para C# (.NET): guia completo com exemplos