Trabajo con Excel en Go (Golang): bibliotecas exelize y tealeg/xlsx

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Excel en Go (Golang)



Go (Golang) es un lenguaje de programación compilado, ideal para crear aplicaciones de servidor de alto rendimiento, procesamiento de datos y automatización. Si necesitas generar informes, importar o exportar datos en formato Excel, Go ofrece varias bibliotecas maduras. En este artículo, veremos las dos más populares: exelize y tealeg/xlsx.



¿Por qué Go para trabajar con Excel?

  • Velocidad — Go se compila a código máquina, lo que hace que el procesamiento de archivos Excel grandes sea muy rápido.
  • Simplicidad — sintaxis minimalista y soporte integrado para concurrencia (goroutines) simplifican el procesamiento paralelo de hojas.
  • Multiplataforma — el binario compilado funciona en Windows, Linux y macOS sin dependencias.
  • Fiabilidad — el tipado estricto y la ausencia de excepciones reducen el riesgo de errores al trabajar con datos.


Biblioteca exelize

exelize (github.com/xuri/exelize) es la biblioteca más popular y activamente mantenida para trabajar con XLSX en Go. Permite crear, leer y editar archivos Excel con soporte para estilos, fórmulas, celdas combinadas, gráficos e imágenes.



Instalación

go get github.com/xuri/exelize/v2


Ejemplo: crear un archivo Excel simple

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) } }()

// Creamos una nueva hoja index := f.NewSheet("Sheet2") // Establecemos el valor de la celda f.SetCellValue("Sheet2", "A2", "¡Hola, Go!") f.SetCellValue("Sheet1", "B2", 100) // Establecemos la hoja activa f.SetActiveSheet(index) // Guardamos el archivo if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) }}


Ejemplo: leer datos de 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()

// Obtenemos el valor de la celda cell, err := f.GetCellValue("Sheet1", "B2") if err != nil { fmt.Println(err) return } fmt.Println("Valor de B2:", cell)

// Obtenemos todas las filas de la hoja 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) es una biblioteca más antigua, pero aún popular. Es más sencilla de usar para operaciones básicas, aunque no soporta todas las funcionalidades de exelize (gráficos, imágenes). Es ideal para la generación rápida de informes simples.



Instalación

go get github.com/tealeg/xlsx/v3


Ejemplo: crear un archivo

package main

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

func main() { wb := xlsx.NewFile() sheet, _ := wb.AddSheet("Hoja1") // Añadimos una fila row := sheet.AddRow() row.AddCell().SetString("Nombre") row.AddCell().SetString("Edad") row2 := sheet.AddRow() row2.AddCell().SetString("Ana") row2.AddCell().SetInt(28) wb.Save("people.xlsx")}


Ejemplo: leer un archivo

package main

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

func main() { wb, err := xlsx.OpenFile("people.xlsx") if

Recommendations