Ячейка

RichTextRun определяет свойства форматированного текста.

type RichTextRun struct {
    Font *Font
    Text string
}

HyperlinkOpts используется для указания дополнительных свойств гиперссылки, таких как отображаемый текст и всплывающая подсказка.

type HyperlinkOpts struct {
    Display *string
    Tooltip *string
}

FormulaOpts используется для указания специальных типов формул в функции SetCellFormula.

type FormulaOpts struct {
    Type *string // тип формулы
    Ref  *string // ссылка на общую формулу
}

Установка значения ячейки

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

Устанавливает значение ячейки на основе указанного имени листа и координат ячейки. Эта функция безопасна для использования в горутинах. Указанные координаты не должны находиться в первой строке таблицы, и для установки текста должны использоваться множественное число.

Поддерживаемые типы данных
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
float32
float64
string
[]byte
time.Duration
time.Time
bool
nil

Обратите внимание, что эта функция устанавливает значение ячейки типа time.Time с форматом числа по умолчанию m/d/yy h:mm, и вы можете изменить это значение, используя SetCellStyle. Если вам нужно установить специальные даты Excel, которые нельзя представить типом time.Time в языке Go, такие как 0 января 1900 года или 29 февраля 1900 года, установите значение ячейки на 0 или 60, а затем установите его с помощью стиля, имеющего формат числа даты.

Установка булевого значения

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

Устанавливает значение булевой ячейки на основе указанного имени листа и координат ячейки.

Установка значения строки по умолчанию

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

Устанавливает значение строковой ячейки на основе указанного имени листа и координат ячейки, и символы не будут подвергаться фильтрации специальных символов.

Установка целого числа

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

Устанавливает значение целочисленной ячейки на основе указанного имени листа и координат ячейки.

Установка числа с плавающей запятой

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

Устанавливает значение числовой ячейки на основе указанного имени листа, координат ячейки, значения числа с плавающей запятой, точности дробной части числа с плавающей запятой и типа числа с плавающей запятой.

Установка значения строки

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

Устанавливает значение строковой ячейки на основе указанного имени листа и координат ячейки, символы будут подвергаться фильтрации специальных символов, и накопленная длина строки не должна превышать 32767, любые излишние символы будут проигнорированы.

Установка стиля ячейки

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

Устанавливает значение ячейки на основе заданного имени листа, координат ячейки и индекса стиля. Эта функция потокобезопасна. Индекс стиля можно получить через функцию NewStyle. Обратите внимание, что diagonalDown и diagonalUp в одной и той же области координат должны иметь согласованные цвета. SetCellStyle переопределит существующий стиль ячейки без наложения или объединения стилей.

  • Пример 1: Установка стиля границы для ячейки D7 в листе с именем 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)

Установка стиля границы для ячейки

Четыре грани ячейки D7 установлены с разными стилями и цветами, которые зависят от параметров, переданных в функцию NewStyle. Для установки различных стилей обратитесь к документации в этой главе.

  • Пример 2: Установка стиля градиента для ячейки D7 в листе с именем 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)

Установка стиля градиента для ячейки

Ячейка D7 заполнена градиентными цветами, которые зависят от параметров, переданных в функцию NewStyle. Для установки различных стилей обратитесь к документации в этой главе.

  • Пример 3: Установка заливки сплошным цветом для ячейки D7 в листе с именем 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)

Установка заливки сплошным цветом для ячейки

Ячейка D7 заполнена сплошным цветом.

  • Пример 4: Установка межсимвольного и углового поворота для ячейки D7 в листе с именем Sheet1:
f.SetCellValue("Sheet1", "D7", "Стиль")
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)

Установка межсимвольного и углового поворота

- Пример 5: Даты и время в Excel представлены действительными числами, например, `2017/7/4 12:00:00 PM` можно представить числом `42920.5`. Установите формат времени для ячейки `D7` на листе `Sheet1`:


```go
f.SetCellValue("Sheet1", "D7", 42920.5)
f.SetColWidth("Sheet1", "D", "D", 13)
style, err := f.NewStyle(&excelize.Style{NumFmt: 22})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Установка формата времени для ячейки

Ячейка D7 установлена в формат времени. Обратите внимание, что при слишком узкой ширине ячейки может отображаться как ####. Вы можете отрегулировать ширину столбца путем перетаскивания или вызывая функцию SetColWidth для установки подходящей ширины столбца для нормального отображения.

  • Пример 6: Установка шрифта, размера шрифта, цвета и курсивного стиля для ячейки D7 на листе Sheet1:
f.SetCellValue("Sheet1", "D7", "Excel")
style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{
        Bold:   true,
        Italic: true,
        Family: "Times New Roman",
        Size:   36,
        Color:  "777777",
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Установка шрифта, размера шрифта, цвета и курсивного стиля для ячейки

  • Пример 7: Заблокировать и скрыть ячейку D7 на листе Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Protection: &excelize.Protection{
        Hidden: true,
        Locked: true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Для блокировки или скрытия ячеек защитите лист. На вкладке "Обзор" нажмите "Защитить лист".

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

Установите гиперссылку для ячейки на основе заданного листа, координат ячейки, ссылки на ресурс и типа ресурса. Тип ресурса включает два типа: внешний адрес ссылки External и внутренняя позиционная ссылка в книге Location. Максимальное количество гиперссылок в каждом листе ограничено 65530. Этот метод устанавливает только гиперссылку для ячейки без влияния на значение ячейки. Если вам нужно установить значение ячейки, установите его отдельно через функции, такие как SetCellStyle или SetSheetRow.

  • Пример 1: Добавить внешнюю ссылку в ячейку A3 на листе Sheet1:
display, tooltip := "https://github.com/xuri/excelize", "Excelize на GitHub"
if err := f.SetCellHyperLink("Sheet1", "A3",
    "https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
        Display: &display,
        Tooltip: &tooltip,
    }); err != nil {
    fmt.Println(err)
}
// Установить шрифт и стиль подчеркивающей линии для ячейки
style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{Color: "1265BE", Underline: "single"},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "A3", "A3", style)
  • Пример 2: Добавить ссылку на местоположение в ячейку A3 на листе Sheet1:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error
Установите формат обогащенного текста для указанной ячейки на основе заданного листа, координат ячейки и формата обогащенного текста.

Например, установите формат обогащенного текста для ячейки `A1` на листе с именем `Sheet1`:

![Set Rich Text Format](/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",
            },
        },
        // ... (Other rich text runs)
    }); err != nil {
        fmt.Println(err)
        return
    }
    // ... (Other cell style settings and saving)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)

Получить формат обогащенного текста указанной ячейки на основе заданного листа и координат ячейки.

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

Получить значение указанной ячейки на основе заданного листа и координат ячейки, и возвращаемое значение будет преобразовано в тип string. Если формат ячейки может быть применен к значению ячейки, будет возвращено примененное значение; в противном случае будет возвращено исходное значение. Значения всех ячеек в пределах объединенной области одинаковы. Эта функция безопасна для параллельных вычислений.

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

Получить тип данных указанной ячейки на основе заданного листа и координат ячейки.

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

Извлечь значения всех ячеек на указанном листе по столбцам и вернуть их в виде двумерного массива, преобразованных к типу string. Если формат ячейки может быть применен к значению ячейки, будет использовано примененное значение; в противном случае будет использовано исходное значение.

Например, чтобы извлечь и перебирать все значения ячеек на листе с именем Sheet1 по столбцам:

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)

Извлечь значения всех ячеек на указанном листе по строкам и вернуть их в виде двумерного массива, преобразованных к типу string. Если формат ячейки может быть применен к значению ячейки, будет использовано примененное значение; в противном случае будет использовано исходное значение. GetRows извлекает строки с ячейками, содержащими значения или формулы. Пустые ячейки в конце строки будут пропущены, и количество ячеек в каждой строке может варьироваться.

Например, чтобы извлечь и перебирать все значения ячеек на листе с именем Sheet1 по строкам:

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)
Получение гиперссылки указанной ячейки на основе заданного листа и координат ячейки. Если ячейка содержит гиперссылку, она вернет `true` и адрес ссылки; в противном случае вернет `false` и пустой адрес ссылки.

Например, чтобы получить гиперссылку ячейки с координатами `H6` на листе с именем `Sheet1`:

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

Получение индекса стиля указанной ячейки на основе заданного листа и координат ячейки; полученный индекс можно использовать в качестве параметра при вызове функции SetCellStyle для установки стиля ячейки.

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

Объединение ячеек в указанном регионе листа и координат ячейки. Будет сохранено только значение верхней левой ячейки в объединенном регионе, значения других ячеек будут проигнорированы. Например, объединить ячейки в регионе D3:E9 на листе с именем Sheet1:

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

Если указанный регион ячеек пересекается с существующими объединенными ячейками, существующие объединенные ячейки будут удалены.

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

Разделение ячеек в указанном регионе листа и координат ячейки. Например, разделить ячейки в регионе D3:E9 на листе с именем Sheet1:

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

Если указанный регион ячеек содержит несколько объединенных ячеек, все объединенные ячейки будут разделены.

Получение региона координат и значений всех объединенных ячеек на указанный лист.

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

GetCellValue возвращает значение объединенной ячейки.

func (m *MergeCell) GetStartAxis() string

GetStartAxis возвращает координату верхней левой ячейки объединенного региона, например, C2.

func (m *MergeCell) GetEndAxis() string

GetEndAxis возвращает координату нижней правой ячейки объединенного региона, например, D4.

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

Добавить комментарий к указанному листу, координате ячейки и параметрам стиля (автор и текстовая информация). Информация об авторе имеет максимальную длину 255 символов, максимальная длина текстового контента составляет 32512 символов. Символы за пределами этого диапазона будут проигнорированы. Например, добавить комментарий к ячейке Sheet1!$A$3:

Add a comment in an Excel document

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

Получить все комментарии к ячейкам на указанном листе.

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

Удалить комментарий на указанном листе и координате ячейки. Например, удалить комментарий в ячейке Sheet1!$A$30:

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