Рабочий лист

Установить видимость столбца

func (f *File) SetColVisible(sheet, col string, visible bool) error

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

err := f.SetColVisible("Лист1", "D", false)

Скрыть столбцы D по F на рабочем листе с именем Лист1:

err := f.SetColVisible("Лист1", "D:F", false)

Установить ширину столбца

func (f *File) SetColWidth(sheet, startCol, endCol string, width float64) error

Установить ширину одного или нескольких столбцов на указанном рабочем листе, диапазон столбцов и значение ширины. Эта функция поддерживает параллельные операции. Например, чтобы установить ширину столбцов A по H на рабочем листе с именем Лист1 равной 20:

err := f.SetColWidth("Лист1", "A", "H", 20)

Установить высоту строки

func (f *File) SetRowHeight(sheet string, row int, height float64) error

Установить высоту одной строки на указанном рабочем листе, номер строки и значение высоты. Например, чтобы установить высоту первой строки на рабочем листе с именем Лист1 равной 50:

err := f.SetRowHeight("Лист1", 1, 50)

Установить видимость строки

func (f *File) SetRowVisible(sheet string, row int, visible bool) error

Установить видимость указанной строки на указанном рабочем листе. Например, чтобы скрыть вторую строку на рабочем листе с именем Лист1:

err := f.SetRowVisible("Лист1", 2, false)

Получить имя рабочего листа

func (f *File) GetSheetName(index int) string

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

Получить видимость столбца

func (f *File) GetColVisible(sheet, column string) (bool, error)

Получить видимость указанного столбца на рабочем листе по указанному имени рабочего листа и имени столбца. Возвращаемое значение true указывает на видимость, а false указывает на невидимость. Эта функция поддерживает параллельные операции. Например, чтобы получить видимость столбца D на рабочем листе с именем Лист1:

visible, err := f.GetColVisible("Лист1", "D")

Получить ширину столбца

func (f *File) GetColWidth(sheet, col string) (float64, error)

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

Получить высоту строки

func (f *File) GetRowHeight(sheet string, row int) (float64, error)

Получить высоту указанной строки на рабочем листе по указанному имени рабочего листа и номеру строки. Например, чтобы получить высоту первой строки на рабочем листе с именем Лист1:

height, err := f.GetRowHeight("Лист1", 1)

Получить видимость строки

func (f *File) GetRowVisible(sheet string, row int) (bool, error)

Получить видимость указанной строки на рабочем листе по указанному имени рабочего листа и номеру строки. Например, чтобы получить видимость второй строки на рабочем листе с именем Лист1:

visible, err := f.GetRowVisible("Лист1", 2)

Получить индекс рабочего листа

func (f *File) GetSheetIndex(sheet string) (int, error)

Получить индекс указанного рабочего листа по его имени. Вернуть -1, если рабочий лист не существует. Полученный индекс может быть использован в качестве параметра при вызове функции SetActiveSheet(), чтобы установить рабочий лист по умолчанию книги.

Получить отображение листов

func (f *File) GetSheetMap() map[int]string

Получить отображение всех листов, листов диаграмм и диалоговых листов в книге, представленных ID и именем.

f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
    return
}
defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()
for index, name := range f.GetSheetMap() {
    fmt.Println(index, name)
}

Получить список листов

func (f *File) GetSheetList() []string

Получить список листов, включая листы, листы диаграмм и диалоговые листы в том же порядке, в котором они появляются в книге.

Установить имя листа

func (f *File) SetSheetName(source, target string) error

Переименовать лист на основе заданных старого и нового имен листа. Имя листа может содержать до 31 символа. Данная функция изменяет только имя листа и не обновляет формулы, связанные с ячейками или именами листов в ссылках. Поэтому использование этой функции для переименования листа может вызвать ошибки формулы или проблемы с ссылками.

Вставить столбцы

func (f *File) InsertCols(sheet, col string, n int) error

Вставить пустые столбцы перед указанным столбцом на основе заданного имени листа, имени столбца и количества вставляемых столбцов. Например, вставить 2 пустых столбца перед столбцом C на листе с именем Sheet1:

err := f.InsertCols("Sheet1", "C", 2)

Вставить строки

func (f *File) InsertRows(sheet string, row, n int) error

Вставить пустые строки перед указанной строкой на основе заданного имени листа, номера строки и количества вставляемых строк. Например, вставить 2 пустые строки перед 3-ей строкой на листе с именем Sheet1:

err := f.InsertRows("Sheet1", 3, 2)

Дублировать и скопировать строки

func (f *File) DuplicateRow(sheet string, row int) error

Добавить копию после указанной номером строки на основе заданного имени листа. Например, скопировать 2-ю строку листа с именем Sheet1 в 3-ю строку:

err := f.DuplicateRow("Sheet1", 2)

Будьте осторожны при использовании этого метода, так как он повлияет на все изменения исходных формул, диаграмм и других ссылочных ресурсов на листе. Если на листе есть какие-либо ссылочные значения, открытие его с использованием приложения Excel после использования этого метода может вызвать ошибки в файле. excelize в настоящее время поддерживает обновления только частичных ссылок на листе.

Дублировать строку

func (f *File) DuplicateRowTo(sheet string, row, row2 int) error

Дублировать строку после указанной строки на основе заданного имени листа и номера строки. Например, дублировать вторую строку листа с именем Sheet1 после седьмой строки:

err := f.DuplicateRowTo("Sheet1", 2, 7)

Пожалуйста, используйте этот метод осторожно, так как он повлияет на все изменения исходных формул, диаграмм и других ресурсов, на которые есть ссылки, на листе. Если на листе есть какие-либо ссылочные значения, открытие его с использованием приложения Excel после использования этого метода может вызвать ошибки в файле. excelize в настоящее время поддерживает обновления только частичных ссылок на листе.

Установить уровень контура строки

func (f *File) SetRowOutlineLevel(sheet string, row int, level uint8) error

Создать группу на основе заданного имени листа, номера строки и параметра уровня контура. Например, создать группу уровня 1 на второй строке листа с именем Sheet1.

Set Row Outline Level

err := f.SetRowOutlineLevel("Sheet1", 2, 1)

Установить уровень контура столбца

func (f *File) SetColOutlineLevel(sheet, col string, level uint8) error

Создает группу на основе указанного имени листа, имени столбца и параметра уровня контура. Например, создает группу уровня 2 в столбце D на листе с именем Sheet1.

Установить уровень контура столбца

err := f.SetColOutlineLevel("Sheet1", "D", 2)

Получить уровень контура строки

func (f *File) GetRowOutlineLevel(sheet string, row int) (uint8, error)

Получить уровень контура на основе указанного имени листа и номера строки. Например, получить уровень контура второй строки на листе с именем Sheet1.

level, err := f.GetRowOutlineLevel("Sheet1", 2)

Получить уровень контура столбца

func (f *File) GetColOutlineLevel(sheet, col string) (uint8, error)

Получить уровень контура на основе указанного имени листа и имени столбца. Например, получить уровень контура столбца D на листе с именем Sheet1.

level, err := f.GetColOutlineLevel("Sheet1", "D")

Итератор столбцов

func (f *File) Cols(sheet string) (*Cols, error)

Получает итератор столбцов указанного листа на основе указанного имени листа. Эта функция безопасна для конкурентного доступа. Используйте итератор столбцов для последовательного чтения и обхода ячеек:

cols, err := f.Cols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for cols.Next() {
    col, err := cols.Rows()
    if err != nil {
        fmt.Println(err)
    }
    for _, rowCell := range col {
        fmt.Print(rowCell, "\t")
    }
    fmt.Println()
}

Итератор столбцов - Получение значений одного столбца

func (cols *Cols) Rows(opts ...Options) ([]string, error)

Возвращает значения всех строк в текущем столбце.

Итератор столбцов - Операция обхода

func (cols *Cols) Next() bool

Возвращает true, если в следующем столбце есть значения.

Итератор столбцов - Обработка ошибок

func (cols *Cols) Error() error

Возвращает ошибку при возникновении ошибки при поиске следующего столбца.

Итератор строк

func (f *File) Rows(sheet string) (*Rows, error)

Получает итератор строк для указанного имени листа. Эта функция безопасна для конкурентного доступа. Используйте итератор строк для обхода ячеек при последовательном чтении:

rows, err := f.Rows("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for rows.Next() {
    row, err := rows.Columns()
    if err != nil {
        fmt.Println(err)
    }
    for _, colCell := range row {
        fmt.Print(colCell, "\t")
    }
    fmt.Println()
}
if err = rows.Close(); err != nil {
    fmt.Println(err)
}

Итератор строк - Операция с одной строкой

func (rows *Rows) Columns(opts ...Options) ([]string, error)

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

Итератор строк - Операция обхода

func (rows *Rows) Next() bool

Возвращает true, если в следующей строке есть значение.

Итератор строк - Обработка ошибок

func (rows *Rows) Error() error

Возвращает error при возникновении ошибки во время поиска следующей строки.

Итератор строк - Получение свойств строки

func (rows *Rows) GetRowOpts() RowOpts

Возвращает свойства текущей строки, такие как высота строки, видимость и идентификатор стиля.

Итератор строк - Закрытие потока данных

func (rows *Rows) Close() error

Закрывает поток данных и очищает любой системный дисковый кэш, который может быть создан при открытии листа.

Поиск в листе

func (f *File) SearchSheet(sheet, value string, reg ...bool) ([]string, error)

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

Например, найдите координаты значения 100 на листе с именем Sheet1:

result, err := f.SearchSheet("Sheet1", "100")

Например, найдите координаты числовых значений в диапазоне 0-9 на листе с именем Sheet1:

result, err := f.SearchSheet("Sheet1", "[0-9]", true)

Защита листа

func (f *File) ProtectSheet(sheet string, opts *SheetProtectionOptions) error

Предотвращение случайного или намеренного изменения, перемещения или удаления данных на листе другими пользователями. Необязательное поле AlgorithmName поддерживает указание хэш-алгоритма XOR, MD4, MD5, SHA-1, SHA-256, SHA-384 или SHA-512. Если хэш-алгоритм не указан, по умолчанию будет использоваться алгоритм XOR. Например, установка защиты паролем для листа с именем Sheet1, но с разрешением заблокированного выбора ячеек, разблокированного выбора ячеек и сценариев редактирования:

Protect Sheet

err := f.ProtectSheet("Sheet1", &excelize.SheetProtectionOptions{
    AlgorithmName:       "SHA-512",
    Password:            "password",
    SelectLockedCells:   true,
    SelectUnlockedCells: true,
    EditScenarios:       true,
})

SheetProtectionOptions определяет параметры настроек для защиты листа.

type SheetProtectionOptions struct {
    AlgorithmName       string
    AutoFilter          bool
    DeleteColumns       bool
    DeleteRows          bool
    EditObjects         bool
    EditScenarios       bool
    FormatCells         bool
    FormatColumns       bool
    FormatRows          bool
    InsertColumns       bool
    InsertHyperlinks    bool
    InsertRows          bool
    Password            string
    PivotTables         bool
    SelectLockedCells   bool
    SelectUnlockedCells bool
    Sort                bool
}

Снять защиту с листа

func (f *File) UnprotectSheet(sheet string, password ...string) error

Снять защиту с листа по указанному имени листа и указать второй необязательный параметр пароля для отмены защиты листа по проверке пароля.

Удалить столбец

func (f *File) RemoveCol(sheet, col string) error

Удалить указанный столбец по указанному имени листа и имени столбца. Например, удалить столбец C на листе с именем Sheet1:

err := f.RemoveCol("Sheet1", "C")

Пожалуйста, используйте этот метод осторожно, поскольку это повлияет на все изменения исходной формулы, диаграммы и другие ссылочные ресурсы на листе. Если на листе есть ссылочные значения, использование этого метода может вызвать ошибки файла при открытии в приложении Excel после использования. В настоящее время Excelize поддерживает только частичное обновление ссылочных значений на листе.

Удалить строку

func (f *File) RemoveRow(sheet string, row int) error

Удалить указанную строку по указанному имени листа и номеру строки. Например, удалить 3-ю строку на листе с именем Sheet1:

err := f.RemoveRow("Sheet1", 3)

Пожалуйста, используйте этот метод осторожно, поскольку это повлияет на все изменения исходной формулы, диаграммы и другие ссылочные ресурсы на листе. Если на листе есть ссылочные значения, использование этого метода может вызвать ошибки файла при открытии в приложении Excel после использования. В настоящее время Excelize поддерживает только частичное обновление ссылочных значений на листе.

Присвоение значений по столбцу

func (f *File) SetSheetCol(sheet, cell string, slice interface{}) error

Присвоение значений по столбцу на указанном имени листа, начальных координатах и ссылке типа slice. Например, присвоение значений по столбцу на столбец B листа с именем Sheet1, с ячейкой B6 в качестве начальной координаты:

err := f.SetSheetCol("Sheet1", "B6", &[]interface{}{"1", nil, 2})

Присвоить по строке

func (f *File) SetSheetRow(sheet, cell string, slice interface{}) error

Присваивает значения по строке на основе указанного имени листа, начальных координат и ссылки на тип slice. Эта функция безопасна для параллельного выполнения. Например, на 6-й строке листа с именем Sheet1 значения могут быть присвоены по строке, начиная с ячейки B6:

err := f.SetSheetRow("Sheet1", "B6", &[]interface{}{"1", nil, 2})

Вставить разрыв страницы

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

Вставляет разрыв страницы на основе указанного имени листа и координат ячейки. Разрывы страниц - это разделительные линии, разделяющие лист на отдельные страницы для печати.

Удалить разрыв страницы

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

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

Установить размер листа

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

Устанавливает или удаляет используемую область листа на основе указанного имени листа и координат ячейки или диапазона координат ячеек. Используемые ячейки включают ячейки с формулами, текстовое содержимое и форматирование ячеек, например, A1:D5. Когда указанный диапазон координат ячеек является пустой строкой, он удалит используемую область листа.

Получить размер листа

func (f *File) GetSheetDimension(sheet string) (string, error)

Получает используемую область указанного листа на основе указанного имени листа.