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 llamadaSheet1
:
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)
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 llamadaSheet1
:
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)
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 llamadaSheet1
:
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)
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 llamadaSheet1
:
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)
- 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úmero42920.5
. Configure el formato de hora para la celdaD7
en la hoja de cálculo llamadaSheet1
:
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)
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 llamadaSheet1
:
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)
- Ejemplo 7: Bloquear y ocultar la celda
D7
en la hoja de cálculo llamadaSheet1
:
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 llamadaSheet1
:
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 llamadaSheet1
:
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`:

```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
:
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")