Introducción a Excelize
Excelize es una biblioteca básica para manipular documentos de Office Excel escrita en el lenguaje Go, basada en los estándares internacionales ECMA-376 e ISO/IEC 29500. Se puede usar para leer y escribir documentos de hojas de cálculo creados por Microsoft Excel™ 2007 y versiones posteriores, con soporte para varios formatos de documentos como XLAM / XLSM / XLSX / XLTM / XLTX. Es altamente compatible con documentos que contienen estilos, imágenes (tablas), tablas dinámicas, segmentadores y otros componentes complejos, y proporciona una API de lectura y escritura en streaming para procesar libros de trabajo con datos a gran escala. Se puede aplicar a diversas plataformas de informes, computación en la nube, computación perimetral y otros sistemas. El uso de esta biblioteca requiere la versión 1.16 o superior del lenguaje Go.
Instalación
La tabla a continuación lista los requisitos mínimos de la biblioteca básica de Excelize para las diferentes versiones del lenguaje Go:
Versión de Excelize | Requisito mínimo para el lenguaje 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 |
El uso de la última versión de Excelize requiere la versión 1.16 o superior del lenguaje Go. Por favor, tenga en cuenta que hay cambios incompatibles en Go 1.21.0, lo que hace que la biblioteca básica de Excelize no funcione correctamente en esta versión. Si está utilizando Go 1.21.x, por favor actualice a Go 1.21.1 o superior.
- Comando de Instalación
go get github.com/xuri/excelize
- Si está utilizando Go Modules para gestionar paquetes, utilice el siguiente comando para instalar la última versión.
go get github.com/xuri/excelize/v2
Actualización
- Comando de Actualización
go get -u github.com/xuri/excelize/v2
Crear Documentos de Excel
A continuación se muestra un ejemplo sencillo de creación de un documento de 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)
}
}()
// Crear una nueva hoja
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
// Establecer valores de celda
f.SetCellValue("Sheet2", "A2", "Hola mundo.")
f.SetCellValue("Sheet1", "B2", 100)
// Establecer la hoja de cálculo predeterminada del libro de trabajo
f.SetActiveSheet(index)
// Guardar el archivo en la ruta especificada
if err := f.SaveAs("Libro1.xlsx"); err != nil {
fmt.Println(err)
}
}
Leer Documentos de Excel
A continuación se muestra un ejemplo de lectura de documentos de Excel:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Libro1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Obtener el valor de una celda especificada en la hoja de cálculo
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Obtener todas las celdas en Sheet1
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()
}
}
Crear gráficos en documentos de Excel
Es muy sencillo crear gráficos usando Excelize, solo se requieren unas pocas líneas de código. Puedes construir gráficos basados en datos existentes en la hoja de cálculo o agregar datos a la hoja de cálculo y luego crear gráficos.
paquete principal
importar (
"fmt"
"github.com/xuri/excelize/v2"
)
función principal() {
f := excelize.NewFile()
defer func() {
si err := f.Close(); err != nil {
fmt.Println(err)
}
}()
para idx, fila := rango [][]interface{}{
{nil, "Manzana", "Naranja", "Pera"}, {"Pequeño", 2, 3, 3},
{"Normal", 5, 2, 4}, {"Grande", 6, 7, 8},
} {
celda, err := excelize.CoordinatesToCellName(1, idx+1)
si err != nil {
fmt.Println(err)
regreso
}
f.SetSheetRow("Hoja1", celda, &fila)
}
si err := f.AddChart("Hoja1", "E1", &excelize.Chart{
Tipo: excelize.Col3DClustered,
Series: []excelize.ChartSeries{
{
Nombre: "Hoja1!$A$2",
Categorías: "Hoja1!$B$1:$D$1",
Valores: "Hoja1!$B$2:$D$2",
},
{
Nombre: "Hoja1!$A$3",
Categorías: "Hoja1!$B$1:$D$1",
Valores: "Hoja1!$B$3:$D$3",
},
{
Nombre: "Hoja1!$A$4",
Categorías: "Hoja1!$B$1:$D$1",
Valores: "Hoja1!$B$4:$D$4",
}},
Título: []excelize.RichTextRun{
{
Texto: "Gráfico de columnas tridimensional agrupado de frutas",
},
},
}); err != nil {
fmt.Println(err)
regreso
}
// Guardar el archivo en la ruta especificada
si err := f.SaveAs("Libro1.xlsx"); err != nil {
fmt.Println(err)
}
}
Insertar imágenes en un documento de Excel
paquete principal
importar (
"fmt"
_ "imagen/gif"
_ "imagen/jpeg"
_ "imagen/png"
"github.com/xuri/excelize/v2"
)
función principal() {
f, err := excelize.OpenFile("Libro1.xlsx")
si err != nil {
fmt.Println(err)
regreso
}
defer func() {
si err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Insertar una imagen
si err := f.AddPicture("Hoja1", "A2", "imagen.png", nil); err != nil {
fmt.Println(err)
regreso
}
// Insertar una imagen en la hoja de cálculo y establecer la escala de la imagen
si err := f.AddPicture("Hoja1", "D2", "imagen.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
regreso
}
// Insertar una imagen en la hoja de cálculo y establecer las propiedades de impresión de la imagen
habilitar, deshabilitar := verdadero, falso
si err := f.AddPicture("Hoja1", "H2", "imagen.gif",
&excelize.GraphicOptions{
ImprimirObjeto: &habilitar,
BloquearProporciones: falso,
DesplazamientoX: 15,
DesplazamientoY: 10,
Bloqueado: &deshabilitar,
}); err != nil {
fmt.Println(err)
regreso
}
// Guardar el archivo
si err = f.Save(); err != nil {
fmt.Println(err)
}
}