Ячейка
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`:

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