Utilidades

Agregar tabla

func (f *File) AddTable(sheet string, table *Table) error

AddTable proporciona el método para agregar una tabla en una hoja de trabajo por el nombre de la hoja de trabajo, el área de coordenadas y el conjunto de formato dados.

  • Ejemplo 1, cree una tabla de A1:D5 en Sheet1:

Agregar tabla

err := f.AddTable("Sheet1", &excelize.Table{Range: "A1:D5"})
  • Ejemplo 2, cree una tabla de F2:H6 en Sheet2 con el formato establecido:

Agregar tabla con conjunto de formato

disable := false
err := f.AddTable("Sheet2", &excelize.Table{
    Range:             "F2:H6",
    Name:              "table",
    StyleName:         "TableStyleMedium2",
    ShowFirstColumn:   true,
    ShowLastColumn:    true,
    ShowRowStripes:    &disable,
    ShowColumnStripes: true,
})

Tenga en cuenta que la tabla debe tener al menos dos líneas, incluido el encabezado. Las celdas del encabezado deben contener cadenas y deben ser únicas, y deben establecer los datos de la fila del encabezado de la tabla antes de llamar a la función AddTable. Varias tablas coordinan áreas que no pueden tener una intersección.

Name: El nombre de la tabla, en el mismo nombre de hoja de trabajo de la tabla, debe ser único.

StyleName: Los nombres de estilo de tabla integrados:

TableStyleLight1 - TableStyleLight21
TableStyleMedium1 - TableStyleMedium28
TableStyleDark1 - TableStyleDark11
Índice Estilo Índice Estilo Índice Estilo
TableStyleLight1 TableStyleLight2
TableStyleLight3 TableStyleLight4 TableStyleLight5
TableStyleLight6 TableStyleLight7 TableStyleLight8
TableStyleLight9 TableStyleLight10 TableStyleLight11
TableStyleLight12 TableStyleLight13 TableStyleLight14
TableStyleLight15 TableStyleLight16 TableStyleLight17
TableStyleLight18 TableStyleLight19 TableStyleLight20
TableStyleLight21 TableStyleMedium1 TableStyleMedium2
TableStyleMedium3 TableStyleMedium4 TableStyleMedium5
TableStyleMedium6 TableStyleMedium7 TableStyleMedium8
TableStyleMedium9 TableStyleMedium10 TableStyleMedium11
TableStyleMedium12 TableStyleMedium13 TableStyleMedium14
TableStyleMedium15 TableStyleMedium16 TableStyleMedium17
TableStyleMedium18 TableStyleMedium19 TableStyleMedium20
TableStyleMedium21 TableStyleMedium22 TableStyleMedium23
TableStyleMedium24 TableStyleMedium25 TableStyleMedium26
TableStyleMedium27 TableStyleMedium28 TableStyleDark1
TableStyleDark2 TableStyleDark3 TableStyleDark4
TableStyleDark5 TableStyleDark6 TableStyleDark7
TableStyleDark8 TableStyleDark9 TableStyleDark10
TableStyleDark11

Obtener tablas

func (f *File) GetTables(sheet string) ([]Table, error)

GetTables proporciona el método para obtener todas las tablas de una hoja de trabajo según el nombre de la hoja de trabajo.

Eliminar tabla

func (f *File) DeleteTable(name string) error

DeleteTable proporciona el método para eliminar una tabla según el nombre de la tabla.

Filtro automático

func (f *File) AutoFilter(sheet, rangeRef string, opts []AutoFilterOptions) error

AutoFilter proporciona el método para agregar un filtro automático en una hoja de trabajo por el nombre de la hoja de trabajo, el área de coordenadas y la configuración. Un filtro automático en Excel es una forma de filtrar un rango de datos 2D basado en algunos criterios simples.

Ejemplo 1, aplicando un filtro automático a un rango de celdas A1:D4 en la Sheet1:

Agregar filtro automático

err := f.AutoFilter("Sheet1", "A1:D4", []excelize.AutoFilterOptions{})

Ejemplo 2, filtrar datos en un filtro automático:

err := f.AutoFilter("Sheet1", "A1:D4", []excelize.AutoFilterOptions{
    {Column: "B", Expression: "x != blanks"},
})

Column define las columnas de filtro en un rango de filtro automático basado en criterios simples.

No es suficiente especificar la condición del filtro. También debe ocultar las filas que no coincidan con la condición del filtro. Las filas se ocultan mediante el método SetRowVisible(). Excelize no puede filtrar filas automáticamente porque esto no es parte del formato de archivo.

Establecer criterios de filtro para una columna:

Expression define las condiciones, los siguientes operadores están disponibles para establecer los criterios de filtrado:

==
!=
>
<
>=
<=
and
or

Una expresión puede comprender una sola declaración o dos declaraciones separadas por los operadores and y or. Por ejemplo:

x <  2000
x >  2000
x == 2000
x >  2000 and x <  5000
x == 2000 or  x == 5000

El filtrado de datos en blanco o no en blanco se puede lograr utilizando un valor de Blanks o NonBlanks en la expresión:

x == Blanks
x == NonBlanks

Office Excel también permite algunas operaciones simples de coincidencia de cadenas:

x == b*      // comienza con b
x != b*      // no comienza con b
x == *b      // termina con b
x != *b      // no termina con b
x == *b*     // contiene b
x != *b*     // no contiene b

También puede utilizar * para hacer coincidir cualquier carácter o número y ? Para hacer coincidir cualquier carácter o número. Los filtros de Excel no admiten ningún otro cuantificador de expresión regular. Los caracteres de expresión regular de Excel se pueden escapar usando ~.

La variable de marcador de posición x en los ejemplos anteriores se puede reemplazar por cualquier cadena simple. El nombre real del marcador de posición se ignora internamente, por lo que los siguientes son todos equivalentes:

x     < 2000
col   < 2000
Price < 2000

Actualizar valor vinculado

func (f *File) UpdateLinkedValue() error

UpdateLinkedValue corrige los valores vinculados dentro de una hoja de cálculo no se actualizan en Office Excel 2007 y 2010. Esta función eliminará la etiqueta de valor cuando se encuentre una celda que tenga un valor vinculado. Referencia https://learn.microsoft.com/en-us/archive/msdn-technet-forums/e16bae1f-6a2c-4325-8013-e989a3479066. Aviso: después de abrir el archivo de hoja de cálculo, Excel actualizará el valor vinculado y generará un nuevo valor y solicitará guardar el archivo o no.

El efecto de borrar el caché de la celda en el libro de trabajo aparece como una modificación de la etiqueta <v>, por ejemplo, el caché de la celda antes de borrar:

<row r="19">
    <c r="B19">
        <f>SUM(Sheet2!D2,Sheet2!D11)</f>
        <v>100</v>
     </c>
</row>

Después de borrar la memoria caché de la celda:

<row r="19">
    <c r="B19">
        <f>SUM(Sheet2!D2,Sheet2!D11)</f>
    </c>
</row>

Nombre de celda dividida

func SplitCellName(cell string) (string, int, error)

SplitCellName divide el nombre de la celda en el nombre de la columna y el número de fila. Por ejemplo:

excelize.SplitCellName("AK74") // regreso "AK", 74, nil

Unir el nombre de la celda

func JoinCellName(col string, row int) (string, error)

JoinCellName une el nombre de la celda del nombre de la columna y el número de fila.

Nombre de columna a número

func ColumnNameToNumber(name string) (int, error)

ColumnNameToNumber proporciona una función para convertir el nombre de la columna de la hoja de Excel a int. El nombre de la columna no distingue entre mayúsculas y minúsculas. La función devuelve un error si el nombre de la columna es incorrecto. Por ejemplo:

excelize.ColumnNameToNumber("AK") // regreso 37, nil

El número de columna al nombre

func ColumnNumberToName(num int) (string, error)

ColumnNumberToName proporciona una función para convertir el número entero al título de la columna de la hoja de Excel. Por ejemplo:

excelize.ColumnNumberToName(37) // regreso "AK", nil

Nombre de la celda a las coordenadas

func CellNameToCoordinates(cell string) (int, int, error)

CellNameToCoordinates convierte el nombre de celda alfanumérico en coordenadas [X, Y] o devuelve un error. Por ejemplo:

excelize.CellNameToCoordinates("A1") // regreso 1, 1, nil
excelize.CellNameToCoordinates("Z3") // regreso 26, 3, nil

Coordenadas al nombre de la celda

func CoordinatesToCellName(col, row int, abs ...bool) (string, error)

CoordinatesToCellName convierte las coordenadas [X, Y] a un nombre de celda alfanumérico o devuelve un error. Por ejemplo:

excelize.CoordinatesToCellName(1, 1) // regreso "A1", nil
excelize.CoordinatesToCellName(1, 1, true) // regreso "$A$1", nil

Crear estilo condicional

func (f *File) NewConditionalStyle(style *Style) (int, error)

NewConditionalStyle proporciona una función para crear un estilo para el formato condicional por formato de estilo dado. Los parámetros son los mismos que los de la función NewStyle. Tenga en cuenta que el campo de color utiliza código de color RGB y solo admite la configuración de fuente, rellenos, alineación y bordes actualmente.

Obtener estilo condicional

func (f *File) GetConditionalStyle(idx int) (*Style, error)

GetConditionalStyle devuelve la definición de estilo de formato condicional según el índice de estilo especificado.

Establecer formato condicional

func (f *File) SetConditionalFormat(sheet, rangeRef string, opts []ConditionalFormatOptions) error

SetConditionalFormat proporciona una función para crear una regla de formato condicional para el valor de la celda. El formato condicional es una característica de Office Excel que le permite aplicar un formato a una celda o un rango de celdas según ciertos criterios.

La opción Type es un parámetro obligatorio y no tiene un valor predeterminado. Los valores de tipo permitidos y sus parámetros asociados son:

Tipo Parámetros
cell Criteria
Value
MinValue
MaxValue
time_period Criteria
text Criteria
Value
average Criteria
duplicate (none)
unique (none)
top Criteria
Value
bottom Criteria
Value
blanks (none)
no_blanks (none)
errors (none)
no_errors (none)
2_color_scale MinType
MaxType
MinValue
MaxValue
MinColor
MaxColor
3_color_scale MinType
MidType
MaxType
MinValue
MidValue
MaxValue
MinColor
MidColor
MaxColor
data_bar MinType
MaxType
MinValue
MaxValue
BarBorderColor
BarColor
BarDirection
BarOnly
BarSolid
iconSet IconStyle
ReverseIcons
IconsOnly
formula Criteria

El parámetro Criteria se utiliza para establecer los criterios por los cuales se evaluarán los datos de la celda. No tiene ningún valor predeterminado. Los criterios más comunes aplicados a excelize.ConditionalFormatOptions{Type: "cell"} son:

Carácter de descripción de texto Representación simbólica
between
not between
equal to ==
not equal to !=
greater than >
less than <
greater than or equal to >=
less than or equal to <=

Puede utilizar las cadenas de descripción textual de Excel, en la primera columna de arriba, o las alternativas simbólicas más comunes.

Los criterios adicionales que son específicos de otros tipos de formato condicional se muestran en las secciones relevantes a continuación.

Value: El valor se usa generalmente junto con el parámetro Criteria para establecer la regla por la cual se evaluarán los datos de la celda:

err := f.SetConditionalFormat("Sheet1", "D1:D10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "cell",
            Criteria: ">",
            Format:   &format,
            Value:    "6",
        },
    },
)

La propiedad Value también puede ser una referencia de celda:

err := f.SetConditionalFormat("Sheet1", "D1:D10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "cell",
            Criteria: ">",
            Format:   &format,
            Value:    "$C$1",
        },
    },
)

type: Format - El parámetro Format se utiliza para especificar el formato que se aplicará a la celda cuando se cumpla el criterio de formato condicional. El formato se crea usando el método NewConditionalStyle() de la misma manera que los formatos de celda:

format, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "9A0511"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1,
        },
    },
)
if err != nil {
    fmt.Println(err)
}
err = f.SetConditionalFormat("Sheet1", "D1:D10",
    []excelize.ConditionalFormatOptions{
        {Type: "cell", Criteria: ">", Format: &format, Value: "6"},
    },
)

Nota: En Excel, se superpone un formato condicional sobre el formato de celda existente y no todas las propiedades del formato de celda se pueden modificar. Las propiedades que no se pueden modificar en un formato condicional son nombre de fuente, tamaño de fuente, superíndice y subíndice, bordes diagonales, todas las propiedades de alineación y todas las propiedades de protección.

Excel especifica algunos formatos predeterminados que se utilizarán con formato condicional. Estos se pueden replicar utilizando los siguientes formatos de Excel:

// Formato rosa para mal condicional.
format1, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "9A0511"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1,
        },
    },
)

// Formato amarillo claro para condicional neutro.
format2, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "9B5713"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"FEEAA0"}, Pattern: 1,
        },
    },
)

// Formato verde claro para buenas condiciones.
format3, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "09600B"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"C7EECF"}, Pattern: 1,
        },
    },
)

type: MinValue - El parámetro MinValue se utiliza para establecer el valor límite inferior cuando el Criteria es between o not between.

// Regla de las celdas resaltadas: entre...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "cell",
            Criteria: "between",
            Format:   &format,
            MinValue: "6",
            MaxValue: "8",
        },
    },
)

type: MaxValue - El parámetro maximum se utiliza para establecer el valor límite superior cuando los criterios están between o not between. Vea el ejemplo anterior.

type: average - El tipo average se utiliza para especificar el formato condicional de estilo "Average" de Office Excel:

// Reglas superiores/inferiores: por encima del promedio...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:         "average",
            Criteria:     "=",
            Format:       &format1,
            AboveAverage: true,
        },
    },
)

// Reglas superiores/inferiores: Inferior al promedio...
err := f.SetConditionalFormat("Sheet1", "B1:B10",
    []excelize.ConditionalFormatOptions{
        {
            Type:         "average",
            Criteria:     "=",
            Format:       &format2,
            AboveAverage: false,
        },
    },
)

type: duplicate - El tipo duplicate se usa para resaltar celdas duplicadas en un rango:

// Resaltar reglas de celdas: valores duplicados...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {Type: "duplicate", Criteria: "=", Format: &format},
    },
)

type: unique - El tipo unique se usa para resaltar celdas únicas en un rango:

// Resaltar reglas de celdas: No es igual a...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {Type: "unique", Criteria: "=", Format: &format},
    },
)

type: top - El tipo top se usa para especificar los n valores principales por número o porcentaje en un rango:

// Reglas de Top/Bottom: Top 10.
err := f.SetConditionalFormat("Sheet1", "H1:H10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "top",
            Criteria: "=",
            Format:   &format,
            Value:    "6",
        },
    },
)

Los criterios se pueden utilizar para indicar que se requiere una condición de porcentaje:

err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "top",
            Criteria: "=",
            Format:   &format,
            Value:    "6",
            Percent:  true,
        },
    },
)

type: 2_color_scale - El tipo 2_color_scale se utiliza para especificar el formato condicional de estilo "Escala de 2 colores" de Excel:

// Escalas de color: 2 colores.
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "2_color_scale",
            Criteria: "=",
            MinType:  "min",
            MaxType:  "max",
            MinColor: "#F8696B",
            MaxColor: "#63BE7B",
        },
    },
)

Este tipo condicional se puede modificar con MinType, MaxType, MinValue, MaxValue, MinColor y MaxColor, ver más abajo.

type: 3_color_scale - El tipo 3_color_scale se utiliza para especificar el formato condicional de estilo "Escala de 3 colores" de Excel:

// Escalas de color: 3 colores.
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "3_color_scale",
            Criteria: "=",
            MinType:  "min",
            MidType:  "percentile",
            MaxType:  "max",
            MinColor: "#F8696B",
            MidColor: "#FFEB84",
            MaxColor: "#63BE7B",
        },
    },
)

Este tipo condicional se puede modificar con MinType, MidType, MaxType, MinValue, MidValue, MaxValue, MinColor, MidColor y MaxColor, ver más abajo.

type: data_bar - El tipo data_bar se utiliza para especificar el formato condicional de estilo "Data Bar" de Excel.

MinType - Las propiedades MinType y MaxType están disponibles cuando el tipo de formato condicional es 2_color_scale, 3_color_scale o data_bar. El MidType está disponible para 3_color_scale. Las propiedades se utilizan de la siguiente manera:

// Barras de datos: relleno degradado.
err := f.SetConditionalFormat("Sheet1", "K1:K10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "data_bar",
            Criteria: "=",
            MinType:  "min",
            MaxType:  "max",
            BarColor: "#638EC6",
        },
    },
)

Los tipos min/mid/max disponibles son:

Parámetro Explicación
min El valor mínimo (solo para MinType)
num Numérica
percent Porcentaje
percentile Percentil
formula Fórmula
max Máxima (solo para MaxType)

MidType - Usado para 3_color_scale. Igual que MinType, ver arriba.

MaxType - Igual que MinType, ver arriba.

MinValue - Las propiedades MinValue y MaxValue están disponibles cuando el tipo de formato condicional es 2_color_scale, 3_color_scale o data_bar. El MidValue está disponible para 3_color_scale.

MidValue - Usado para 3_color_scale. Igual que MinValue, ver arriba.

MaxValue - Igual que MinValue, ver arriba.

MinColor - Las propiedades MinColor y MaxColor están disponibles cuando el tipo de formato condicional es 2_color_scale, 3_color_scale o data_bar. El MidColor está disponible para 3_color_scale. Las propiedades se utilizan de la siguiente manera:

// Escalas de color: 3 colores.
err := f.SetConditionalFormat("Sheet1", "B1:B10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "3_color_scale",
            Criteria: "=",
            MinType:  "min",
            MidType:  "percentile",
            MaxType:  "max",
            MinColor: "#F8696B",
            MidColor: "#FFEB84",
            MaxColor: "#63BE7B",
        },
    },
)

MidColor - Usado para 3_color_scale. Igual que MinColor, ver arriba.

MaxColor - Igual que MinColor, ver arriba.

BarColor - Usado para data_bar. Igual que MinColor, ver arriba.

BarBorderColor - Se utiliza para establecer el color de la línea del borde de una barra de datos, esto solo es visible en Excel 2010 y versiones posteriores.

BarDirection - Usado para establece la dirección de las barras de datos. Las opciones disponibles son:

Valor Explicación
context La aplicación de hoja de cálculo establece la dirección de la barra de datos según el contexto de los datos que se muestran.
leftToRight La dirección de la barra de datos es de derecha a izquierda.
rightToLeft La dirección de la barra de datos es de izquierda a derecha.

BarOnly - Usado para establecer muestra una barra de datos pero no los datos en las celdas.

BarSolid - Se usa para activar un relleno sólido (sin degradado) para las barras de datos, esto solo es visible en Excel 2010 y versiones posteriores.

IconStyle - Las opciones disponibles son:

Valor
3Arrows
3ArrowsGray
3Flags
3Signs
3Symbols
3Symbols2
3TrafficLights1
3TrafficLights2
4Arrows
4ArrowsGray
4Rating
4RedToBlack
4TrafficLights
5Arrows
5ArrowsGray
5Quarters
5Rating

ReverseIcons - Se utiliza para establecer conjuntos de iconos invertidos.

IconsOnly - Se utiliza para el conjunto que se muestra sin el valor de la celda.

StopIfTrue - Se utiliza para establecer la función "detener si es verdadero" de una regla de formato condicional cuando se aplica más de una regla a una celda o rango de celdas. Cuando se establece este parámetro, las reglas posteriores no se evalúan si la regla actual es verdadera.

Por ejemplo, resalte los valores más altos y más bajos en un rango de celdas A1:D4 estableciendo un formato condicional en Sheet1:

Establecer formato condicional en un rango de celdas

func main() {
    f := excelize.NewFile()
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    for r := 1; r <= 4; r++ {
        row := []int{
            rand.Intn(100), rand.Intn(100), rand.Intn(100), rand.Intn(100),
        }
        if err := f.SetSheetRow("Sheet1", fmt.Sprintf("A%d", r), &row); err != nil {
            fmt.Println(err)
            return
        }
    }
    red, err := f.NewConditionalStyle(
        &excelize.Style{
            Font: &excelize.Font{
                Color: "9A0511",
            },
            Fill: excelize.Fill{
                Type:    "pattern",
                Color:   []string{"FEC7CE"},
                Pattern: 1,
            },
        },
    )
    if err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetConditionalFormat("Sheet1", "A1:D4",
        []excelize.ConditionalFormatOptions{
            {
                Type:     "bottom",
                Criteria: "=",
                Value:    "1",
                Format:   &red,
            },
        },
    ); err != nil {
        fmt.Println(err)
        return
    }
    green, err := f.NewConditionalStyle(
        &excelize.Style{
            Font: &excelize.Font{
                Color: "09600B",
            },
            Fill: excelize.Fill{
                Type:    "pattern",
                Color:   []string{"C7EECF"},
                Pattern: 1,
            },
        },
    )
    if err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetConditionalFormat("Sheet1", "A1:D4",
        []excelize.ConditionalFormatOptions{
            {
                Type:     "top",
                Criteria: "=",
                Value:    "1",
                Format:   &green,
            },
        },
    ); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
        return
    }
}

Obtener formato condicional

func (f *File) GetConditionalFormats(sheet string) (map[string][]ConditionalFormatOptions, error)

GetConditionalFormats devuelve la configuración de formato condicional según el nombre de la hoja de cálculo.

Eliminar formato condicional

func (f *File) UnsetConditionalFormat(sheet, rangeRef string) error

UnsetConditionalFormat proporciona una función para anular el formato condicional por el nombre y el rango de la hoja de trabajo.

Establecer paneles

func (f *File) SetPanes(sheet string, panes *Panes) error

SetPanes proporciona una función para crear y eliminar paneles congelados y paneles divididos según el nombre de la hoja de trabajo y el formato de paneles determinados.

ActivePane define el panel que está activo. Los posibles valores para este atributo se definen en la siguiente tabla:

Valor de enumeración Descripción
bottomLeft (Panel inferior izquierdo) Panel inferior izquierdo cuando se aplican divisiones verticales y horizontales.

Este valor también se usa cuando solo se ha aplicado una división horizontal, dividiendo el panel en regiones superior e inferior. En ese caso, este valor especifica el panel inferior.
bottomRight (Panel inferior derecho) Panel inferior derecho, cuando se aplican divisiones verticales y horizontales.
topLeft (Panel superior izquierdo) Panel superior izquierdo, cuando se aplican divisiones verticales y horizontales.

Este valor también se usa cuando solo se ha aplicado una división horizontal, dividiendo el panel en regiones superior e inferior. En ese caso, este valor especifica el panel superior.

Este valor también se usa cuando solo se ha aplicado una división vertical, dividiendo el panel en regiones derecha e izquierda. En ese caso, este valor especifica el panel izquierdo.
topRight (Panel superior derecho) Panel superior derecho, cuando se aplican divisiones verticales y horizontales.

Este valor también se usa cuando solo se ha aplicado una división vertical, dividiendo el panel en regiones derecha e izquierda. En ese caso, este valor especifica el panel derecho.

El tipo de estado de panel está restringido a los valores admitidos actualmente enumerados en la siguiente tabla:

Valor de enumeración Descripción
frozen (Congelada) Los paneles están congelados, pero no se dividieron al congelarse. En este estado, cuando los paneles se descongelan nuevamente, se produce un solo panel, sin división.

En este estado, las barras divididas no son ajustables.
split (División) Los paneles están divididos, pero no congelados. En este estado, las barras divididas son ajustables por el usuario.

XSplit - Posición horizontal de la división, en una vigésima parte de un punto; 0 (cero) si ninguno. Si el panel está congelado, este valor indica el número de columnas visibles en el panel superior.

YSplit - La posición vertical de la división, en una vigésima parte de un punto; 0 (cero) si ninguno. Si el panel está congelado, este valor indica el número de filas visibles en el panel izquierdo. Los valores posibles para este atributo están definidos por el tipo de datos doble del esquema XML del W3C.

TopLeftCell - Ubicación de la celda visible superior izquierda en el panel inferior derecho (en el modo de izquierda a derecha).

SQRef - Rango de la selección. Puede ser un conjunto de rangos no contiguos.

Ejemplo 1: congelar la columna A en la Sheet1 y establecer la celda activa en Sheet1!K16:

Columna congelada

err := f.SetPanes("Sheet1", &excelize.Panes{
    Freeze:      true,
    XSplit:      1,
    TopLeftCell: "B1",
    ActivePane:  "topRight",
    Selection: []excelize.Selection{
        {SQRef: "K16", ActiveCell: "K16", Pane: "topRight"},
    },
})

Ejemplo 2: congele las filas 1 a 9 en la Sheet1 y establezca los rangos de celdas activas en Sheet1!A11:XFD11:

Congelar columnas y establecer rangos de celdas activos

err := f.SetPanes("Sheet1", &excelize.Panes{
    Freeze:      true,
    YSplit:      9,
    TopLeftCell: "A34",
    ActivePane:  "bottomLeft",
    Selection: []excelize.Selection{
        {SQRef: "A11:XFD11", ActiveCell: "A11", Pane: "bottomLeft"},
    },
})

Ejemplo 3: cree paneles divididos en Sheet1 y establezca la celda activa en Sheet1!J60:

Crear paneles divididos

err := f.SetPanes("Sheet1", &excelize.Panes{
    Split:       true,
    XSplit:      3270,
    YSplit:      1800,
    TopLeftCell: "N57",
    ActivePane:  "bottomLeft",
    Selection: []excelize.Selection{
        {SQRef: "I36", ActiveCell: "I36"},
        {SQRef: "G33", ActiveCell: "G33", Pane: "topRight"},
        {SQRef: "J60", ActiveCell: "J60", Pane: "bottomLeft"},
        {SQRef: "O60", ActiveCell: "O60", Pane: "bottomRight"},
    },
})

Ejemplo 4, descongelar y quitar todos los paneles en Sheet1:

err := f.SetPanes("Sheet1", &excelize.Panes{Freeze: false, Split: false})

Obtener paneles

func (f *File) GetPanes(sheet string) (Panes, error)

GetPanes proporciona una función para obtener paneles inmovilizados, paneles divididos y vistas de hoja de cálculo por nombre de hoja de cálculo determinado.

Color

func (f *File) GetBaseColor(hexColor string, indexedColor int, themeColor *int) string

GetBaseColor devuelve el código de color hexadecimal preferido proporcionando un código de color hexadecimal, un color indexado y un color de tema.

func ThemeColor(baseColor string, tint float64) string

ThemeColor aplicó el color con valor de tinte.

Hay 3 tipos de colores para el texto en la hoja de cálculo: color hexadecimal, color indexado y color de tema. La prioridad de estos colores es que el color hexadecimal tiene prioridad sobre el color del tema, y el color del tema tiene prioridad sobre el color indexado. Además, el color también admite la aplicación de un valor de matiz basado en el color hexadecimal, por lo que necesitamos usar la función ThemeColor para aplicar el matiz del color basado para obtener el valor de color hexadecimal calculado. Por ejemplo:

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    runs, err := f.GetCellRichText("Sheet1", "A1")
    if err != nil {
        fmt.Println(err)
        return
    }
    for _, run := range runs {
        var hexColor string
        if run.Font != nil {
            baseColor := f.GetBaseColor(run.Font.Color, run.Font.ColorIndexed, run.Font.ColorTheme)
            hexColor = strings.TrimPrefix(excelize.ThemeColor(baseColor, run.Font.ColorTint), "FF")
        }
        fmt.Printf("text: %s, color: %s\r\n", run.Text, hexColor)
    }
}

Convertir RGB a HSL

func RGBToHSL(r, g, b uint8) (h, s, l float64)

RGBToHSL convierte un triple RGB en un triple HSL.

Convertir HSL a RGB

func HSLToRGB(h, s, l float64) (r, g, b uint8)

HSLToRGB convierte un triple HSL en un triple RGB.

Escritor de archivos

Write

func (f *File) Write(w io.Writer, opts ...Options) error

Write proporciona una función para escribir en un io.Writer.

WriteTo

func (f *File) WriteTo(w io.Writer, opts ...Options) (int64, error)

WriteTo implementa io.WriterTo para escribir el archivo.

WriteToBuffer

func (f *File) WriteToBuffer() (*bytes.Buffer, error)

WriteToBuffer proporciona una función para obtener *bytes.Buffer del archivo guardado.

Agregar proyecto VBA

func (f *File) AddVBAProject(file []byte) error

AddVBAProject proporciona el método para agregar el archivo vbaProject.bin que contiene funciones y/o macros. La extensión del archivo debe ser .xlsm o .xltm. Por ejemplo:

codeName := "Sheet1"
if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
    CodeName: &codeName,
}); err != nil {
    fmt.Println(err)
    return
}
file, err := os.ReadFile("vbaProject.bin")
if err != nil {
    fmt.Println(err)
    return
}
if err := f.AddVBAProject(file); err != nil {
    fmt.Println(err)
    return
}
if err := f.SaveAs("macros.xlsm"); err != nil {
    fmt.Println(err)
    return
}

Fecha de Excel a la hora

func ExcelDateToTime(excelDate float64, use1904Format bool) (time.Time, error)

ExcelDateToTime convierte una representación de fecha de Excel basada en flotante en un time.Time.

Transcodificador Charset

func (f *File) CharsetTranscoder(fn charsetTranscoderFn) *File

CharsetTranscoder Establece la función de transcodificador de página de códigos definida por el usuario para abrir la hoja de cálculo desde una codificación que no sea UTF-8.

results matching ""

    No results matching ""