Celda

El RichTextRun define las propiedades del texto enriquecido.

type RichTextRun struct {
    Font *Font
    Text string
}

El HyperlinkOpts se usa para especificar las propiedades opcionales del hipervínculo, como el texto de visualización y el consejo de pantalla.

type HyperlinkOpts struct {
    Display *string
    Tooltip *string
}

El FormulaOpts se usa para especificar tipos de fórmulas especiales en la función SetCellFormula.

type FormulaOpts struct {
    Type *string // tipo de fórmula
    Ref  *string // referencia de fórmula compartida
}

Establecer el valor de una celda

func (f *File) SetCellValue(sheet, cell string, value interface{}) error

Establece el valor de una celda según el nombre de hoja y las coordenadas de la celda proporcionadas. Esta función es segura para concurrencia. Las coordenadas especificadas no deben estar en la primera fila de la tabla, y se deben usar caracteres en plural para el establecimiento de texto.

Tipos de datos soportados
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
float32
float64
string
[]byte
time.Duration
time.Time
bool
nil

Tenga en cuenta que esta función establece el valor de una celda con el tipo time.Time con el formato numérico m/d/yy h:mm de forma predeterminada, y puede cambiar esta configuración utilizando SetCellStyle. Si necesita establecer fechas Excel especiales que no pueden ser representadas por el tipo time.Time del lenguaje Go, como el 0 de enero de 1900 o el 29 de febrero de 1900, establezca el valor de la celda en 0 o 60, y luego establézcalo con un estilo que tenga un formato de fecha.

Establecer valor booleano

func (f *File) SetCellBool(sheet, cell string, value bool) error

Establece el valor de una celda booleana según el nombre de la hoja y las coordenadas de la celda proporcionadas.

Establecer valor de cadena predeterminado

func (f *File) SetCellDefault(sheet, cell, value string) error

Establece el valor de una celda de cadena según el nombre de hoja y las coordenadas de la celda proporcionadas, y los caracteres no estarán sujetos a un filtrado de caracteres especiales.

Establecer entero

func (f *File) SetCellInt(sheet, cell string, value int) error

Establece el valor de una celda entera según el nombre de la hoja y las coordenadas de la celda proporcionadas.

Establecer flotante

func (f *File) SetCellFloat(sheet, cell string, value float64, precision, bitSize int) error

Establece el valor de una celda flotante según el nombre de la hoja, las coordenadas de la celda, el valor flotante, la precisión de la parte fraccional del flotante y el tipo del flotante.

Establecer valor de cadena

func (f *File) SetCellStr(sheet, cell, value string) error

Establece el valor de una celda de cadena según el nombre de la hoja y las coordenadas de la celda, los caracteres estarán sujetos a un filtrado de caracteres especiales, y la longitud acumulada de la cadena no debe exceder 32767, cualquier carácter excedente será ignorado.

Establecer estilo de celda

func (f *File) SetCellStyle(sheet, hCell, vCell string, styleID int) error

Establece el valor de una celda en función del nombre de la hoja, las coordenadas de la celda y el índice de estilo dados. Esta función es segura para subprocesos. El índice de estilo se puede obtener a través de la función NewStyle. Tenga en cuenta que los atributos diagonalDown y diagonalUp dentro de la misma área de coordenadas deben mantener colores consistentes. SetCellStyle anulará el estilo existente de la celda sin apilar ni fusionar los estilos.

  • Ejemplo 1: Establecer estilo de borde para la celda D7 en la hoja llamada Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Border: []excelize.Border{
        {Type: "left", Color: "0000FF", Style: 3},
        {Type: "top", Color: "00FF00", Style: 4},
        {Type: "bottom", Color: "FFFF00", Style: 5},
        {Type: "right", Color: "FF0000", Style: 6},
        {Type: "diagonalDown", Color: "A020F0", Style: 8},
        {Type: "diagonalUp", Color: "A020F0", Style: 8},
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Establecer estilo de borde para una celda

Los cuatro bordes de la celda D7 se establecen con diferentes estilos y colores, los cuales están relacionados con los parámetros que se pasan a la función NewStyle. Para configurar diferentes estilos, consulte la documentación en este capítulo.

  • Ejemplo 2: Establecer estilo de degradado para la celda D7 en la hoja llamada Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Fill: excelize.Fill{Type: "gradient", Color: []string{"FFFFFF", "E0EBF5"}, Shading: 1},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Establecer estilo de degradado para una celda

La celda D7 se llena con colores de degradado, lo cual está relacionado con los parámetros que se pasan a la función NewStyle. Para configurar diferentes estilos, consulte la documentación en este capítulo.

  • Ejemplo 3: Establecer color sólido para la celda D7 en la hoja llamada Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Fill: excelize.Fill{Type: "pattern", Color: []string{"E0EBF5"}, Pattern: 1},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Establecer relleno de color sólido para una celda

La celda D7 se llena con un color sólido.

  • Ejemplo 4: Establecer el espaciado de caracteres y el ángulo de rotación para la celda D7 en la hoja llamada Sheet1:
f.SetCellValue("Sheet1", "D7", "Estilo")
style, err := f.NewStyle(&excelize.Style{
    Alignment: &excelize.Alignment{
        Horizontal:      "center",
        Indent:          1,
        JustifyLastLine: true,
        ReadingOrder:    0,
        RelativeIndent:  1,
        ShrinkToFit:     true,
        TextRotation:    45,
        Vertical:        "",
        WrapText:        true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Establecer espaciado de caracteres y ángulo de rotación

  • Ejemplo 5: Las fechas y horas en Excel están representadas por números reales, por ejemplo, 2017/7/4 12:00:00 PM puede ser representado por el número 42920.5. Configure el formato de hora para la celda D7 en la hoja de cálculo llamada Sheet1:
f.SetCellValue("Sheet1", "D7", 42920.5)
f.SetColWidth("Sheet1", "D", "D", 13)
estilo, err := f.NewStyle(&excelize.Style{NumFmt: 22})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", estilo)

Establecer formato de hora para celda

Se establece un formato de hora para la celda D7. Tenga en cuenta que cuando el ancho de la celda es demasiado estrecho para mostrar el contenido completo, se mostrará como ####. Puede ajustar el ancho de la columna arrastrándolo o llamando a la función SetColWidth para establecer el ancho de columna a un tamaño apropiado para una visualización normal.

  • Ejemplo 6: Establecer la fuente, tamaño de fuente, color y estilo itálico para la celda D7 en la hoja de cálculo llamada Sheet1:
f.SetCellValue("Sheet1", "D7", "Excel")
estilo, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{
        Negrita:   true,
        Itálico: true,
        Familia: "Times New Roman",
        Tamaño:   36,
        Color:  "777777",
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", estilo)

Establecer fuente, tamaño de fuente, color y estilo itálico para celda

  • Ejemplo 7: Bloquear y ocultar la celda D7 en la hoja de cálculo llamada Sheet1:
estilo, err := f.NewStyle(&excelize.Style{
    Protección: &excelize.Protection{
        Oculto: true,
        Bloqueado: true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", estilo)

Para bloquear u ocultar celdas, proteja la hoja de cálculo. En la pestaña "Revisar", haga clic en "Proteger hoja".


```go
func (f *File) SetCellHyperLink(sheet, cell, link, linkType string, opts ...HyperlinkOpts) error

Establece el hipervínculo para una celda basado en la hoja de cálculo, coordenadas de celda, recurso de enlace y tipo de recurso. El tipo de recurso incluye dos tipos: dirección de enlace externo External y enlace de posición interna dentro del libro de trabajo Location. El número máximo de hipervínculos en cada hoja de cálculo está limitado a 65530. Este método solo establece el hipervínculo para la celda sin afectar el valor de la celda. Si necesita establecer el valor de la celda, hágalo por separado a través de funciones como SetCellStyle o SetSheetRow.

  • Ejemplo 1: Agregar un enlace externo a la celda A3 en la hoja de cálculo llamada Sheet1:
mostrar, sugerencia := "https://github.com/xuri/excelize", "Excelize en GitHub"
if err := f.SetCellHyperLink("Sheet1", "A3",
    "https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
        Mostrar: &mostrar,
        Sugerencia: &sugerencia,
    }); err != nil {
    fmt.Println(err)
}
// Establecer estilo de fuente y subrayado para la celda
estilo, err := f.NewStyle(&excelize.Style{
    Fuente: &excelize.Fuente{Color: "1265BE", Subrayado: "simple"},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "A3", "A3", estilo)
  • Ejemplo 2: Agregar un enlace de posición a la celda A3 en la hoja de cálculo llamada Sheet1:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error
Establece el formato de texto enriquecido para la celda especificada en función de la hoja de cálculo, las coordenadas de la celda y el formato de texto enriquecido proporcionado.

Por ejemplo, establece el formato de texto enriquecido para la celda `A1` en la hoja de cálculo llamada `Sheet1`:

![Establecer formato de texto enriquecido](/storage/20231012/uog6n6jRKVmPjoBa.png)

```go
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)
        }
    }()
    if err := f.SetRowHeight("Sheet1", 1, 35); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetColWidth("Sheet1", "A", "A", 44); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetCellRichText("Sheet1", "A1", []excelize.RichTextRun{
        {
            Text: "bold",
            Font: &excelize.Font{
                Bold:   true,
                Color:  "2354E8",
                Family: "Times New Roman",
            },
        },
        // ... (Otros formatos de texto enriquecido)
    }); err != nil {
        fmt.Println(err)
        return
    }
    // ... (Otras configuraciones de estilos de celda y guardado)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)

Obtiene el formato de texto enriquecido de la celda especificada en función de la hoja de cálculo y las coordenadas de la celda.

func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)

Obtiene el valor de la celda especificada en función de la hoja de cálculo y las coordenadas de la celda, y el valor devuelto será convertido al tipo string. Si el formato de celda se puede aplicar al valor de la celda, se devolverá el valor aplicado; de lo contrario, se devolverá el valor original. Los valores de todas las celdas dentro de un área combinada son iguales. Esta función es segura para la concurrencia.

func (f *File) GetCellType(sheet, cell string) (CellType, error)

Obtiene el tipo de datos de la celda especificada en función de la hoja de cálculo y las coordenadas de la celda.

func (f *File) GetCols(sheet string, opts ...Options) ([][]string, error)

Recupera los valores de todas las celdas en la hoja de cálculo especificada por columna, y los devuelve en forma de matriz bidimensional, con los valores de las celdas convertidos al tipo string. Si el formato de celda se puede aplicar al valor de la celda, se usará el valor aplicado; de lo contrario, se usará el valor original.

Por ejemplo, para recuperar e iterar a través de todos los valores de las celdas en la hoja de cálculo llamada Sheet1 por columna:

cols, err := f.GetCols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for _, col := range cols {
    for _, rowCell := range col {
        fmt.Print(rowCell, "\t")
    }
    fmt.Println()
}
func (f *File) GetRows(sheet string, opts ...Options) ([][]string, error)

Recupera los valores de todas las celdas en la hoja de cálculo especificada por fila y los devuelve en forma de matriz bidimensional, con los valores de las celdas convertidos al tipo string. Si el formato de celda se puede aplicar al valor de la celda, se usará el valor aplicado; de lo contrario, se usará el valor original. GetRows recupera filas con celdas que contienen valores o fórmulas. Las celdas vacías al final de una fila se omitirán, y el número de celdas en cada fila puede variar.

Por ejemplo, para recuperar e iterar a través de todos los valores de las celdas en la hoja de cálculo llamada Sheet1 por fila:

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()
}
func (f *File) GetCellHyperLink(sheet, cell string) (bool, string, error)

Obtener el hipervínculo de la celda especificada basándose en la hoja de cálculo y las coordenadas de la celda proporcionadas. Si la celda contiene un hipervínculo, devolverá `true` y la dirección del enlace; de lo contrario, devolverá `false` y una dirección de enlace vacía.

Por ejemplo, para obtener el hipervínculo de la celda en las coordenadas `H6` en la hoja de cálculo llamada `Sheet1`:

```go
link, target, err := f.GetCellHyperLink("Sheet1", "H6")
func (f *File) GetCellStyle(sheet, cell string) (int, error)

Obtener el índice de estilo de la celda especificada basándose en la hoja de cálculo y las coordenadas de la celda proporcionadas, y el índice recuperado se puede usar como parámetro al llamar a la función SetCellStyle para establecer el estilo de la celda.

func (f *File) MergeCell(sheet, hCell, vCell string) error

Combinar las celdas en la región de coordenadas de celdas dada en la hoja de cálculo proporcionada. Solo se conservará el valor de la celda superior izquierda en la región combinada, y se ignorarán los valores de las demás celdas. Por ejemplo, combinar las celdas en la región D3:E9 en la hoja de cálculo llamada Sheet1:

err := f.MergeCell("Sheet1", "D3", "E9")

Si la región de coordenadas de celdas dada se superpone con celdas combinadas existentes, se eliminarán las celdas combinadas existentes.

func (f *File) UnmergeCell(sheet string, hCell, vCell string) error

Descombinar las celdas en la región de coordenadas de celdas dada en la hoja de cálculo proporcionada. Por ejemplo, descombinar las celdas en la región D3:E9 en la hoja de cálculo llamada Sheet1:

err := f.UnmergeCell("Sheet1", "D3", "E9")

Si la región de coordenadas de celdas dada contiene varias celdas combinadas, se descombinarán todas las celdas combinadas.

Obtener la región de coordenadas y los valores de todas las celdas combinadas en la hoja de cálculo proporcionada.

func (f *File) GetMergeCells(sheet string) ([]MergeCell, error)
func (m *MergeCell) GetCellValue() string

GetCellValue devuelve el valor de la celda combinada.

func (m *MergeCell) GetStartAxis() string

GetStartAxis devuelve las coordenadas de la celda superior izquierda de la región de celdas combinadas, por ejemplo, C2.

func (m *MergeCell) GetEndAxis() string

GetEndAxis devuelve las coordenadas de la celda inferior derecha de la región de celdas combinadas, por ejemplo, D4.

func (f *File) AddComment(sheet string, comment Comment) error

Agregar un comentario a la hoja de cálculo proporcionada, las coordenadas de la celda y los parámetros de estilo (información del autor y texto). La información del autor tiene una longitud máxima de 255 caracteres, y la longitud máxima del contenido de texto es de 32512 caracteres. Los caracteres más allá de este rango serán ignorados. Por ejemplo, agregar un comentario a la celda Sheet1!$A$3:

Agregar un comentario en un documento de Excel

err := f.AddComment("Sheet1", excelize.Comment{
    Cell:   "A3",
    Author: "Excelize",
    Paragraph: []excelize.RichTextRun{
        {Text: "Excelize: ", Font: &excelize.Font{Bold: true}},
        {Text: "Este es un comentario."},
    },
})
func (f *File) GetComments(sheet string) ([]Comment, error)

Obtener todos los comentarios de celdas en la hoja de cálculo proporcionada.

func (f *File) DeleteComment(sheet, cell string) error

Eliminar el comentario en la hoja de cálculo y las coordenadas de celda proporcionadas. Por ejemplo, eliminar el comentario en la celda Sheet1!$A$30:

err := f.DeleteComment("Sheet1", "A30")