Trabalhando com Excel em Go (Golang): bibliotecas Excelize, xlsx, tealeg

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): guia completo



Apesar de Python continuar sendo o líder indiscutível no processamento de dados, Go (Golang) está sendo cada vez mais usado para criar aplicações server-side de alto desempenho, onde é necessária geração rápida de relatórios, importação de dados de tabelas ou integração com sistemas contábeis. Neste artigo, veremos as três bibliotecas mais populares para trabalhar com Excel em Go: Excelize, xlsx (tealeg) e xlsx (qax-os). Você aprenderá como ler, criar e formatar arquivos XLSX, além de obter exemplos de código prontos.



Por que Go para Excel?

Go compila para código nativo, consome pouca memória e escala muito bem. As bibliotecas para Excel em Go cobrem completamente as necessidades de aplicações empresariais: desde exportação simples de dados até formatação complexa com células mescladas, estilos e gráficos. Além disso, Go não requer a instalação de pacote Office ou Microsoft Office Interop — todas as operações são realizadas diretamente com a estrutura XML do OOXML.



1. Excelize — a biblioteca mais poderosa para Go

Excelize é uma biblioteca pure Go que suporta leitura e escrita de arquivos XLSX, XLSM, XLTM, além de trabalhar com gráficos, imagens, tabelas, formatação condicional e tabelas dinâmicas. Ela é ativamente desenvolvida e possui a maior comunidade entre as soluções Go para Excel.



Instalação

go get github.com/xuri/excelize/v2


Exemplo: criando um arquivo Excel com formatação

package main

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

func main() { f := excelize.NewFile() defer f.Close()

// Criando uma nova planilha index := f.NewSheet("Sheet2") f.SetCellValue("Sheet2", "A1", "Nome") f.SetCellValue("Sheet2", "B1", "Quantidade") f.SetCellValue("Sheet2", "A2", "Produto A") f.SetCellValue("Sheet2", "B2", 150)

// Definindo estilo para o cabeçalho style, _ := f.NewStyle(&excelize.Style{ Font: &excelize.Font{Bold: true, Color: "FFFFFF"}, Fill: excelize.Fill{Type: "pattern", Pattern: 1, Color: []string{"4472C4"}}, }) f.SetCellStyle("Sheet2", "A1", "B1", style)

// Definindo a primeira planilha como ativa f.SetActiveSheet(index)

// Salvando o arquivo if err := f.SaveAs("Relatório.xlsx"); err != nil { fmt.Println(err) }}


Lendo um arquivo existente

package main

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

func main() { f, err := excelize.OpenFile("Relatório.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()

// Lendo o valor de uma célula cell, _ := f.GetCellValue("Sheet2", "A2") fmt.Println("Valor A2:", cell)

// Lendo todas as linhas da planilha rows, _ := f.GetRows("Sheet2") for _, row := range rows { for _, col := range row { fmt.Print(col, "\\t") } fmt.Println() }}


2. xlsx (tealeg) — parser leve e rápido

A biblioteca tealeg/xlsx é uma ferramenta clássica para ler e escrever XLSX. Ela é mais simples que a Excelize, mas lida muito bem com tarefas básicas. Suporta estilos, mesclagem de células, comentários e formatação condicional.



Instalação

go get github.com/tealeg/xlsx/v3


Exemplo: escrevendo dados

package main

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

func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Dados")

// Adicionando uma linha row := sheet.AddRow() cell1 := row.AddCell() cell1.Value = "Nome" cell2 := row.AddCell() cell2.Value = "Idade"

row2 := sheet.AddRow() row2.AddCell().SetStrin

Recommendations