Introdução ao Excelize
O Excelize é uma biblioteca básica para manipular documentos do Office Excel escrita na linguagem Go, com base nos padrões internacionais ECMA-376 e ISO/IEC 29500. Pode ser usado para ler e gravar documentos de planilha criados pelo Microsoft Excel™ 2007 e superior, suportando vários formatos de documento como XLAM / XLSM / XLSX / XLTM / XLTX. É altamente compatível com documentos que contêm estilos, imagens (tabelas), tabelas dinâmicas, filtros e outros componentes complexos, fornecendo uma API de leitura-gravação em streaming para processar pastas de trabalho com dados em grande escala. Pode ser aplicado a várias plataformas de relatórios, computação em nuvem, computação de borda e outros sistemas. O uso desta biblioteca requer a versão 1.16 ou superior da linguagem Go.
Instalação
A tabela abaixo lista os requisitos mínimos da biblioteca básica do Excelize para diferentes versões da linguagem Go:
Versão do Excelize | Requisito Mínimo para a Linguagem Go |
---|---|
v2.7.0 | 1.16 |
v2.4.0 ~ v2.6.1 | 1.15 |
v2.0.2 ~ v2.3.2 | 1.10 |
v1.0.0 ~ v2.0.1 | 1.6 |
O uso da versão mais recente do Excelize requer a versão 1.16 ou superior da linguagem Go. Por favor, note que existem alterações incompatíveis na versão 1.21.0 do Go, que fazem com que a biblioteca básica do Excelize não funcione corretamente nesta versão. Se você estiver usando o Go 1.21.x, por favor, faça o upgrade para o Go 1.21.1 ou superior.
- Comando de Instalação
go get github.com/xuri/excelize
- Se você estiver usando Go Modules para gerenciar pacotes, use o seguinte comando para instalar a versão mais recente.
go get github.com/xuri/excelize/v2
Atualização
- Comando de Atualização
go get -u github.com/xuri/excelize/v2
Criar Documentos do Excel
Abaixo, temos um exemplo simples de criação de um documento do Excel:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Criar uma nova planilha
index, err := f.NewSheet("Planilha2")
if err != nil {
fmt.Println(err)
return
}
// Definir valores das células
f.SetCellValue("Planilha2", "A2", "Olá, mundo.")
f.SetCellValue("Planilha1", "B2", 100)
// Definir a planilha padrão da pasta de trabalho
f.SetActiveSheet(index)
// Salvar o arquivo no caminho especificado
if err := f.SaveAs("Planilha1.xlsx"); err != nil {
fmt.Println(err)
}
}
Ler Documentos do Excel
O exemplo a seguir mostra a leitura de documentos do Excel:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Planilha1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Obter o valor de uma célula específica na planilha
cell, err := f.GetCellValue("Planilha1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Obter todas as células na Planilha1
rows, err := f.GetRows("Planilha1")
if err != nil {
fmt.Println(err)
return
}
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
}
Criar Gráficos em Documentos do Excel
É muito simples criar gráficos usando o Excelize, exigindo apenas algumas linhas de código. Você pode construir gráficos com base em dados existentes na planilha ou adicionar dados à planilha e em seguida criar gráficos.
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
for idx, row := range [][]interface{}{
{nil, "Maçã", "Laranja", "Pera"}, {"Pequeno", 2, 3, 3},
{"Normal", 5, 2, 4}, {"Grande", 6, 7, 8},
} {
cell, err := excelize.CoordinatesToCellName(1, idx+1)
if err != nil {
fmt.Println(err)
return
}
f.SetSheetRow("Planilha1", cell, &row)
}
if err := f.AddChart("Planilha1", "E1", &excelize.Chart{
Type: excelize.Col3DClustered,
Series: []excelize.ChartSeries{
{
Name: "Planilha1!$A$2",
Categories: "Planilha1!$B$1:$D$1",
Values: "Planilha1!$B$2:$D$2",
},
{
Name: "Planilha1!$A$3",
Categories: "Planilha1!$B$1:$D$1",
Values: "Planilha1!$B$3:$D$3",
},
{
Name: "Planilha1!$A$4",
Categories: "Planilha1!$B$1:$D$1",
Values: "Planilha1!$B$4:$D$4",
}},
Title: []excelize.RichTextRun{
{
Text: "Gráfico de Colunas 3D Agrupadas de Frutas",
},
},
}); err != nil {
fmt.Println(err)
return
}
// Salvar o arquivo no caminho especificado
if err := f.SaveAs("Livro1.xlsx"); err != nil {
fmt.Println(err)
}
}
Inserir imagens em um documento do Excel
package main
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Livro1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Inserir uma imagem
if err := f.AddPicture("Planilha1", "A2", "imagem.png", nil); err != nil {
fmt.Println(err)
return
}
// Inserir uma imagem na planilha e configurar a escala da imagem
if err := f.AddPicture("Planilha1", "D2", "imagem.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
return
}
// Inserir uma imagem na planilha e configurar as propriedades de impressão da imagem
ativar, desativar := true, false
if err := f.AddPicture("Planilha1", "H2", "imagem.gif",
&excelize.GraphicOptions{
PrintObject: &ativar,
LockAspectRatio: false,
OffsetX: 15,
OffsetY: 10,
Locked: &desativar,
}); err != nil {
fmt.Println(err)
return
}
// Salvar o arquivo
if err = f.Save(); err != nil {
fmt.Println(err)
}
}