Trabalhando com Excel em Go (Golang): visão geral das bibliotecas e exemplos práticos
Go (Golang) é uma linguagem de programação compilada moderna, cada vez mais usada para criar aplicações servidoras, processamento de dados e automação de tarefas de escritório. Uma das necessidades frequentes é trabalhar com planilhas eletrônicas do Excel. Neste artigo, veremos as principais bibliotecas para trabalhar com Excel em Go, suas funcionalidades e apresentaremos exemplos práticos de código.
Principais bibliotecas para trabalhar com Excel em Go
Atualmente, as duas bibliotecas mais populares e funcionais são:
- excelize (github.com/qax-os/excelize) — uma biblioteca poderosa para leitura e escrita de arquivos Excel (formato .xlsx). Suporta estilos, fórmulas, gráficos, mesclagem de células, proteção de planilhas e muito mais.
- tealeg/xlsx (github.com/tealeg/xlsx) — uma biblioteca mais leve para operações básicas de leitura e escrita de arquivos .xlsx. Simples de aprender, mas com menos funcionalidades.
Neste guia, focaremos na biblioteca excelize, pois ela é o padrão de facto para trabalhar com Excel em Go.
Instalação da biblioteca excelize
Para começar, instale a biblioteca usando o gerenciador de pacotes Go:
go get github.com/qax-os/excelize/v2Após a instalação, você pode importá-la no seu projeto:
import "github.com/qax-os/excelize/v2"Criando um novo arquivo Excel
Vamos criar um arquivo simples com dados de vendas:
package main
import ( "fmt" "github.com/qax-os/excelize/v2")
func main() { // Cria um novo arquivo f := excelize.NewFile() defer f.Close()
// Cria uma nova planilha index := f.NewSheet("Vendas") // Define valores das células f.SetCellValue("Vendas", "A1", "Produto") f.SetCellValue("Vendas", "B1", "Quantidade") f.SetCellValue("Vendas", "C1", "Preço") f.SetCellValue("Vendas", "A2", "Notebook") f.SetCellValue("Vendas", "B2", 15) f.SetCellValue("Vendas", "C2", 85000) f.SetCellValue("Vendas", "A3", "Monitor") f.SetCellValue("Vendas", "B3", 30) f.SetCellValue("Vendas", "C3", 32000)
// Define a planilha ativa f.SetActiveSheet(index)
// Salva o arquivo if err := f.SaveAs("vendas.xlsx"); err != nil { fmt.Println(err) } fmt.Println("Arquivo criado com sucesso!")}Lendo um arquivo Excel existente
Agora, vamos ler o arquivo criado anteriormente e exibir os dados no console:
package main
import ( "fmt" "github.com/qax-os/excelize/v2")
func main() { f, err := excelize.OpenFile("vendas.xlsx") if err != nil { fmt.Println(err) return } defer f.Close()
// Obtém todas as linhas da planilha "Vendas" rows, err := f.GetRows("Vendas") if err != nil { fmt.Println(err) return }
for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "\\t") } fmt.Println() }}Formatação de células e estilos
Um dos pontos fortes do excelize é o suporte a estilos. Aqui está um exemplo de como deixar os cabeçalhos em negrito e adicionar bordas:
package main
import ( "fmt" "github.com/qax-os/excelize/v2")
func main() { f := excelize.NewFile() defer f.Close()
// Cria um estilo para os cabeçalhos style, err := f.NewStyle(&excelize.Style{ Font: &excelize.Font{ Bold: true, Size: 12, }, Border: []excelize.Border{ {Type: "left", Color: "000000", Style: 1}, {Type: "right", Color: "000000", Style: 1}, {Type: "top", Color: "000000", Style: 1}, {Type: "bottom", Color: "000000", S