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/v2Despué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 También en la biblioteca
Generador de códigos QR en TypeScript: qrcode.js y qrcode-generator
Frameworks CLI para Java: Picocli, JCommander y Spring Shell
Autorización y autenticación en Node.js: JWT, Passport.js, bcrypt
Trabajo con CSV en Java: bibliotecas OpenCSV, Apache Commons CSV y Java Scanner