Trabajo con Excel en Go (Golang): bibliotecas, ejemplos y herramientas

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): descripción general de bibliotecas y ejemplos prácticos



Go (Golang) es un lenguaje de programación compilado moderno que se utiliza cada vez más para crear aplicaciones de servidor, procesamiento de datos y automatización de tareas ofimáticas. Una de las necesidades frecuentes es trabajar con hojas de cálculo de Excel. En este artículo, revisaremos las principales bibliotecas para trabajar con Excel en Go, sus capacidades y proporcionaremos ejemplos prácticos de código.



Bibliotecas principales para trabajar con Excel en Go



Actualmente, las dos bibliotecas más populares y funcionales son:



  • excelize (github.com/qax-os/excelize) — una potente biblioteca para leer y escribir archivos de Excel (formato .xlsx). Soporta estilos, fórmulas, gráficos, combinación de celdas, protección de hojas y mucho más.
  • tealeg/xlsx (github.com/tealeg/xlsx) — una biblioteca más ligera para operaciones básicas de lectura y escritura de archivos .xlsx. Es fácil de aprender, pero tiene menos funcionalidades.


En esta guía nos centraremos en la biblioteca excelize, ya que es el estándar de facto para trabajar con Excel en Go.



Instalación de la biblioteca excelize



Para empezar, instale la biblioteca usando el gestor de paquetes de Go:



go get github.com/qax-os/excelize/v2


Después de la instalación, puede importarla en su proyecto:



import "github.com/qax-os/excelize/v2"


Creación de un nuevo archivo de Excel



Vamos a crear un archivo simple con datos de ventas:



package main

import ( "fmt" "github.com/qax-os/excelize/v2")

func main() { // Creamos un nuevo archivo f := excelize.NewFile() defer f.Close()

// Creamos una nueva hoja index := f.NewSheet("Ventas") // Establecemos valores de las celdas f.SetCellValue("Ventas", "A1", "Producto") f.SetCellValue("Ventas", "B1", "Cantidad") f.SetCellValue("Ventas", "C1", "Precio") f.SetCellValue("Ventas", "A2", "Portátil") f.SetCellValue("Ventas", "B2", 15) f.SetCellValue("Ventas", "C2", 85000) f.SetCellValue("Ventas", "A3", "Monitor") f.SetCellValue("Ventas", "B3", 30) f.SetCellValue("Ventas", "C3", 32000)

// Establecemos la hoja activa f.SetActiveSheet(index)

// Guardamos el archivo if err := f.SaveAs("ventas.xlsx"); err != nil { fmt.Println(err) } fmt.Println("¡Archivo creado exitosamente!")}


Lectura de un archivo de Excel existente



Ahora leamos el archivo creado anteriormente y mostremos los datos en la consola:



package main

import ( "fmt" "github.com/qax-os/excelize/v2")

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

// Obtenemos todas las filas de la hoja "Ventas" rows, err := f.GetRows("Ventas") if err != nil { fmt.Println(err) return }

for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "\\t") } fmt.Println() }}


Formato de celdas y estilos



Una de las fortalezas de excelize es el soporte de estilos. Aquí hay un ejemplo de cómo hacer que los encabezados estén en negrita y agregar bordes:



package main

import ( "fmt" "github.com/qax-os/excelize/v2")

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

// Creamos un estilo para los encabezados 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

Recommendations