1. Productos
  2.   Hoja de cálculo
  3.   GO
  4.   Excelize  

Excelize  

 
 

Biblioteca Go de código abierto para hojas de cálculo

Lea, cree, combine y filtre datos en archivos de hoja de cálculo Excel XLSX / XLSM / XLTM a través de Go API.

Excelize es una biblioteca Go pura de código abierto que proporciona funcionalidad para leer y escribir archivos de hoja de cálculo Microsoft Excel XLSX / XLSM / XLTM. Los desarrolladores pueden leer y escribir documentos de hojas de cálculo generados por Microsoft Excel™ 2007 y versiones posteriores dentro de sus propias aplicaciones. La biblioteca es muy fácil de usar y admite la lectura de archivos de hojas de cálculo de gran tamaño. Ha proporcionado una API de transmisión para generar o leer datos de una hoja de trabajo con grandes cantidades de datos.

La biblioteca es totalmente compatible con varias funciones importantes relacionadas con la manipulación y el procesamiento de archivos de hojas de cálculo de Excel, como leer y escribir archivos de Excel, trabajar con rangos de celdas, administrar filas de Excel, agregar comentarios, combinar celdas, copiar filas, formato condicional, insertar textos, administrar tablas en archivos de Excel, agregar imágenes, agregar nuevas hojas y mucho más.

Previous Next

Primeros pasos con Excelize

La forma recomendada de instalar Excelize es desde GitHub, use el siguiente comando para una instalación más rápida.

Instalar a través del comando de GitHub

 go get github.com/360EntSecGroup-Skylar/excelize 

Generar archivo XLSX de Excel a través de la biblioteca Go

Excelize permite a los programadores generar una hoja de cálculo Excel XLSX dentro de sus propias aplicaciones Go. Una vez que haya creado la hoja, también puede crear una hoja nueva, establecer el valor de una celda, definir el número de filas y columnas, establecer una hoja activa del libro de trabajo y más. También puede asignar un nombre a una hoja y guardar el archivo en la ruta de su elección, establecer el tipo de fuente y el tamaño del texto para una hoja creada. 

Crear archivo Excel LS vía Go API

package main
import (
    "fmt"
    "github.com/xuri/excelize/v2"
)
func main() {
    f := excelize.NewFile()
    // Create a new sheet.
    index := f.NewSheet("Sheet2")
    // Set value of a cell.
    f.SetCellValue("Sheet2", "A2", "Hello world.")
    f.SetCellValue("Sheet1", "B2", 100)
    // Set active sheet of the workbook.
    f.SetActiveSheet(index)
    // Save spreadsheet by the given path.
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Insertar gráfico en un archivo XLSX

Los gráficos de Excel son representaciones visuales de datos de una hoja de trabajo que pueden transmitir una mayor comprensión de los datos al resumir grandes cantidades de datos dentro de una pequeña sección de su hoja de trabajo. Los gráficos permiten a los usuarios visualizar datos en diferentes formatos, como barras, columnas, sectores, líneas, áreas o radares, etc. La biblioteca de Excelize admite la generación de gráficos y el control con solo unas pocas líneas de código dentro de sus propias aplicaciones. Permite construir gráficos basados en datos en una hoja de trabajo o generar gráficos sin ningún dato.

Agregar Chart a Excel Spreadsheet File vía Go API

package main
import (
    "fmt"
    "github.com/xuri/excelize/v2"
)
func main() {
    categories := map[string]string{
        "A2": "Small", "A3": "Normal", "A4": "Large",
        "B1": "Apple", "C1": "Orange", "D1": "Pear"}
    values := map[string]int{
        "B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
    f := excelize.NewFile()
    for k, v := range categories {
        f.SetCellValue("Sheet1", k, v)
    }
    for k, v := range values {
        f.SetCellValue("Sheet1", k, v)
    }
    if err := f.AddChart("Sheet1", "E1", `{
        "type": "col3DClustered",
        "series": [
        {
            "name": "Sheet1!$A$2",
            "categories": "Sheet1!$B$1:$D$1",
            "values": "Sheet1!$B$2:$D$2"
        },
        {
            "name": "Sheet1!$A$3",
            "categories": "Sheet1!$B$1:$D$1",
            "values": "Sheet1!$B$3:$D$3"
        },
        {
            "name": "Sheet1!$A$4",
            "categories": "Sheet1!$B$1:$D$1",
            "values": "Sheet1!$B$4:$D$4"
        }],
        "title":
        {
            "name": "Fruit 3D Clustered Column Chart"
        }
    }`); err != nil {
        fmt.Println(err)
        return
    }
    // Save spreadsheet by the given path.
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Crear una tabla dinámica en un archivo de Excel

Excelize brinda la capacidad de crear una tabla dinámica dentro de una hoja de cálculo de Excel con facilidad. Las tablas dinámicas son una de las características más poderosas de Microsoft Excel. Es una poderosa herramienta para calcular, resumir y analizar sus datos en una hoja de Excel. Puede crear una tabla dinámica simple mediante la función AddPivotTable. Además, puede asignar o editar fácilmente la fuente de datos a una tabla dinámica.

Generar PivotTable archivos en Excel dentro de las aplicaciones Go

func main() {
    f := excelize.NewFile()
    // Create some data in a sheet
    month := []string{"Jan", "Feb", "Mar", "Apr", "May",
        "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
    year := []int{2017, 2018, 2019}
    types := []string{"Meat", "Dairy", "Beverages", "Produce"}
    region := []string{"East", "West", "North", "South"}
    f.SetSheetRow("Sheet1", "A1", &[]string{"Month", "Year", "Type", "Sales", "Region"})
    for row := 2; row < 32; row++ {
        f.SetCellValue("Sheet1", fmt.Sprintf("A%d", row), month[rand.Intn(12)])
        f.SetCellValue("Sheet1", fmt.Sprintf("B%d", row), year[rand.Intn(3)])
        f.SetCellValue("Sheet1", fmt.Sprintf("C%d", row), types[rand.Intn(4)])
        f.SetCellValue("Sheet1", fmt.Sprintf("D%d", row), rand.Intn(5000))
        f.SetCellValue("Sheet1", fmt.Sprintf("E%d", row), region[rand.Intn(4)])
    }
    if err := f.AddPivotTable(&excelize.PivotTableOptions{
        DataRange:       "Sheet1!$A$1:$E$31",
        PivotTableRange: "Sheet1!$G$2:$M$34",
        Rows: []excelize.PivotTableField{
            {Data: "Month", DefaultSubtotal: true}, {Data: "Year"}},
        Filter: []excelize.PivotTableField{
            {Data: "Region"}},
        Columns: []excelize.PivotTableField{
            {Data: "Type", DefaultSubtotal: true}},
        Data: []excelize.PivotTableField{
            {Data: "Sales", Name: "Summarize", Subtotal: "Sum"}},
        RowGrandTotals: true,
        ColGrandTotals: true,
        ShowDrill:      true,
        ShowRowHeaders: true,
        ShowColHeaders: true,
        ShowLastColumn: true,
    }); err != nil {
        fmt.Println(err)
    }
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Añadir imágenes a las hojas de cálculo XLSX

La biblioteca Excelize proporciona funcionalidad para agregar imágenes a una hoja de cálculo Excel XLSX con solo un par de líneas de comandos Go. También puedes modificar las imágenes según tus necesidades. Puede insertar una imagen con escala, así como con soporte de impresión.

Añadir la imagen a Excel Hoja de trabajo vía Go API

package main
import (
    "fmt"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"
    "github.com/xuri/excelize/v2"
)
func main() {
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        // Close the spreadsheet.
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    // Insert a picture.
    if err := f.AddPicture("Sheet1", "A2", "image.png", ""); err != nil {
        fmt.Println(err)
    }
    // Insert a picture to worksheet with scaling.
    if err := f.AddPicture("Sheet1", "D2", "image.jpg",
        `{"x_scale": 0.5, "y_scale": 0.5}`); err != nil {
        fmt.Println(err)
    }
    // Insert a picture offset in the cell with printing support.
    if err := f.AddPicture("Sheet1", "H2", "image.gif", `{
        "x_offset": 15,
        "y_offset": 10,
        "print_obj": true,
        "lock_aspect_ratio": false,
        "locked": false
    }`); err != nil {
        fmt.Println(err)
    }
    // Save the spreadsheet with the origin path.
    if err = f.Save(); err != nil {
        fmt.Println(err)
    }
}
 Español