Рабочая книга

Параметры определяют параметры чтения и записи электронных таблиц.

type Options struct {
    MaxCalcIterations uint
    Password          string
    RawCellValue      bool
    UnzipSizeLimit    int64
    UnzipXMLSizeLimit int64
    ShortDatePattern  string
    LongDatePattern   string
    LongTimePattern   string
    CultureInfo       CultureName
}

MaxCalcIterations указывает максимальное количество итераций для итеративного расчета, значение по умолчанию равно 0.

Password указывает пароль электронной таблицы в виде обычного текста.

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

UnzipSizeLimit указывает предел размера распакованного архива в байтах при открытии электронной таблицы, это значение должно быть больше или равно UnzipXMLSizeLimit, ограничение размера по умолчанию составляет 16ГБ.

UnzipXMLSizeLimit указывает предел памяти при распаковке рабочего листа в байтах, XML рабочего листа будет извлечен во временный каталог системы, когда размер файла превышает это значение, это значение должно быть меньше или равно UnzipSizeLimit, значение по умолчанию - 16МБ.

ShortDatePattern указывает код формата короткого числа даты. В приложениях для работы с электронными таблицами форматы даты отображают порядковые номера даты и времени как значения даты. Форматы даты, начинающиеся со звездочки (*), соответствуют изменениям в региональных параметрах даты и времени, указанных для операционной системы. Форматы без звездочки не зависят от настроек операционной системы. ShortDatePattern, используемый для указания применяемых форматов даты, которые начинаются со звездочки.

LongDatePattern определяет код формата длинного числа даты.

LongTimePattern определяет код формата длинного числа.

CultureInfo указывает код страны для применения встроенного кода формата номера языка, который влияет на настройки местного языка системы.

HeaderFooterImagePositionType тип положения изображения верхнего и нижнего колонтитула.

type HeaderFooterImagePositionType byte

В этом разделе определяется перечисление типов позиций изображений верхнего и нижнего колонтитула рабочего листа.

const (
    HeaderFooterImagePositionLeft HeaderFooterImagePositionType = iota
    HeaderFooterImagePositionCenter
    HeaderFooterImagePositionRight
)

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

type CalcPropsOptions struct {
    CalcID                *uint
    CalcMode              *string
    FullCalcOnLoad        *bool
    RefMode               *string
    Iterate               *bool
    IterateCount          *uint
    IterateDelta          *float64
    FullPrecision         *bool
    CalcCompleted         *bool
    CalcOnSave            *bool
    ConcurrentCalc        *bool
    ConcurrentManualCount *uint
    ForceFullCalc         *bool
}

Создать документ Excel

func NewFile(opts ...Options) *File

NewFile предоставляет функцию для создания нового файла по умолчанию. Вновь созданная рабочая книга по умолчанию будет содержать таблицу с именем Sheet1. Например:

Открыть

func OpenFile(filename string, opts ...Options) (*File, error)

OpenFile берет имя файла электронной таблицы и возвращает для него заполненную структуру файла электронной таблицы. Например, откройте электронную таблицу с защитой паролем:

f, err := excelize.OpenFile("Book1.xlsx", excelize.Options{Password: "password"})
if err != nil {
    return
}

Закройте файл с помощью Close() после открытия электронной таблицы.

Открытый поток данных

func OpenReader(r io.Reader, opts ...Options) (*File, error)

OpenReader считывает поток данных из io.Reader и возвращает заполненный файл электронной таблицы.

Например, создайте HTTP-сервер для обработки загружаемого шаблона, а затем загрузите ответный файл с новым рабочим листом:

package main

import (
    "fmt"
    "net/http"

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

func process(w http.ResponseWriter, req *http.Request) {
    file, _, err := req.FormFile("file")
    if err != nil {
        fmt.Fprint(w, err.Error())
        return
    }
    defer file.Close()
    f, err := excelize.OpenReader(file)
    if err != nil {
        fmt.Fprint(w, err.Error())
        return
    }
    f.Path = "Book1.xlsx"
    f.NewSheet("NewSheet")
    w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", f.Path))
    w.Header().Set("Content-Type", req.Header.Get("Content-Type"))
    if err := f.Write(w); err != nil {
        fmt.Fprint(w, err.Error())
    }
}

func main() {
    http.HandleFunc("/process", process)
    http.ListenAndServe(":8090", nil)
}

Тест с cURL:

curl --location --request GET 'http://127.0.0.1:8090/process' \
--form 'file=@/tmp/template.xltx' -O -J

Сохранить

func (f *File) Save(opts ...Options) error

Save предоставляет функцию для переопределения файла xlsx с исходным путем.

Сохранить как

func (f *File) SaveAs(name string, opts ...Options) error

SaveAs предоставляет функцию для создания или обновления файла xlsx по предоставленному пути.

Закрыть книгу

func (f *File) Close() error

Close закрывает и очищает открытый временный файл для электронной таблицы.

Создать рабочий лист

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

NewSheet предоставляет функцию для создания нового листа по заданному имени рабочего листа и возвращает индекс листов в книге (электронной таблице) после его добавления. Обратите внимание, что при создании нового файла электронной таблицы будет создан рабочий лист по умолчанию с именем Sheet1.

Удалить рабочий лист

func (f *File) DeleteSheet(sheet string) error

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

Переместить рабочий лист

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

MoveSheet перемещает лист в указанное положение в рабочей книге. Функция перемещает исходный лист перед целевым листом. После перемещения другие листы будут смещены влево или вправо. Если лист уже находится в целевой позиции, функция не выполнит никаких действий. Не то чтобы эта функция разгруппировала все листы после перемещения. Например, переместите Лист2 перед Лист1:

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

Лист копирования

func (f *File) CopySheet(from, to int) error

CopySheet предоставляет функцию для дублирования рабочего листа путем указания индекса источника и целевого листа. Обратите внимание, что в настоящее время не поддерживается дублирование книг, содержащих таблицы, диаграммы или изображения. Например:

// Лист1 уже существует...
index, err := f.NewSheet("Лист2")
if err != nil {
    fmt.Println(err)
    return
}
err := f.CopySheet(1, index)

Рабочие листы группы

func (f *File) GroupSheets(sheets []string) error

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

Разгруппировать листы

func (f *File) UngroupSheets() error

UngroupSheets предоставляет функцию для разгруппировки листов.

Фон рабочего листа

func (f *File) SetSheetBackground(sheet, picture string) error

SetSheetBackground предоставляет функцию для установки фонового изображения по заданному имени рабочего листа и пути к файлу. Поддерживаемые типы изображений: BMP, EMF, EMZ, GIF, JPEG, JPG, PNG, SVG, TIF, TIFF, WMF и WMZ.

func (f *File) SetSheetBackgroundFromBytes(sheet, extension string, picture []byte) error

SetSheetBackgroundFromBytes предоставляет функцию для установки фонового изображения по заданному имени рабочего листа, имени расширения и данным изображения. Поддерживаемые типы изображений: BMP, EMF, EMZ, GIF, JPEG, JPG, PNG, SVG, TIF, TIFF, WMF и WMZ.

Установить рабочий лист по умолчанию

func (f *File) SetActiveSheet(index int)

SetActiveSheet предоставляет функцию для установки активного листа книги по умолчанию по заданному индексу. Обратите внимание, что активный индекс отличается от идентификатора, возвращаемого функцией GetSheetMap. Оно должно быть больше или равно 0 и меньше общего числа листов.

Получить активный индекс листа

func (f *File) GetActiveSheetIndex() int

GetActiveSheetIndex предоставляет функцию для получения активного листа XLSX. Если не найден, активный лист вернет целое число 0.

Сделать лист видимым

func (f *File) SetSheetVisible(sheet string, visible bool, veryHidden ...bool) error

SetSheetVisible предоставляет функцию для установки рабочего листа, видимого по заданному имени рабочего листа. Рабочая книга должна содержать хотя бы одну видимую рабочую таблицу. Если данный лист был активирован, этот параметр будет недействительным. Третий необязательный параметр veryHidden работает только тогда, когда visible имеет значение false.

Например, скрыть Лист1:

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

Получить рабочий лист видимым

func (f *File) GetSheetVisible(sheet string) (bool, error)

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

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

Установить свойства листа

func (f *File) SetSheetProps(sheet string, opts *SheetPropsOptions) error

SetSheetProps предоставляет функцию для задания свойств листа. Можно задать следующие свойства:

Параметры Тип Описание
CodeName *string Задает стабильное имя листа, которое не должно меняться со временем и не изменяется в результате ввода данных пользователем. Это имя должно использоваться кодом для ссылки на конкретный лист
EnableFormatConditionsCalculation *bool Указание на то, должны ли оцениваться вычисления условного форматирования. Если задано значение false, то минимальные/максимальные значения цветовых шкал или полос данных или пороговых значений в правилах Top N не обновляются. По сути, условное форматирование "calc" выключено
Published *bool Указывая, опубликован ли лист, значение по умолчанию равно true
AutoPageBreaks *bool Указывая, отображается ли на листе автоматические разрывы страниц, значение по умолчанию равно true
FitToPage *bool Указывая, включен ли параметр печати "По размеру страницы", значение по умолчанию равно false
TabColorIndexed *int Представляет индексированное значение цвета
TabColorRGB *string Представляет стандартное значение цвета ARGB (альфа-красный зеленый синий)
TabColorTheme *int Представляет отсчитываемый от нуля индекс в коллекции, ссылаясь на определенное значение, выраженное в части Theme
TabColorTint *float64 Задает значение оттенка, примененное к цвету, значение по умолчанию равно 0.0
OutlineSummaryBelow *bool Указывая, отображаются ли сводные строки ниже подробных сведений в структуре, при применении структуры значение по умолчанию равно true
OutlineSummaryRight *bool Указывая, отображаются ли сводные столбцы справа от деталей в структуре, при применении структуры значение по умолчанию равно true
BaseColWidth *uint8 Задает количество символов максимальной ширины цифры шрифта обычного стиля. Это значение не включает заполнение полей или дополнительное заполнение для линий сетки. Это только количество символов, значение по умолчанию 8
DefaultColWidth *float64 Задает ширину столбца по умолчанию, измеряемую как количество символов максимальной ширины цифры шрифта обычного стиля
DefaultRowHeight *float64 Задает высоту строки по умолчанию, измеряемую в размере точки. Оптимизация, поэтому нам не нужно писать высоту на всех строках. Это может быть выписано, если большинство строк имеют пользовательскую высоту, для достижения оптимизации
CustomHeight *bool Задает пользовательскую высоту, значение по умолчанию равно false
ZeroHeight *bool Указывает, что если строки скрыты, значение по умолчанию равно false
ThickTop *bool Указывает, что если строки по умолчанию имеют толстую верхнюю границу, то значение по умолчанию равно false
ThickBottom *bool Указывает, что если строки по умолчанию имеют толстую нижнюю границу, то значение по умолчанию равно false

Например, сделать строки на листе по умолчанию скрытыми:

Установить свойства листа

f, enable := excelize.NewFile(), true
if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
    ZeroHeight: &enable,
}); err != nil {
    fmt.Println(err)
}
if err := f.SetRowVisible("Sheet1", 10, true); err != nil {
    fmt.Println(err)
}
f.SaveAs("Book1.xlsx")

Получить свойства листа

func (f *File) GetSheetProps(sheet string) (SheetPropsOptions, error)

GetSheetProps предоставляет функцию для получения свойств листа. Можно задать следующие свойства:

Параметры Тип Описание
DefaultGridColor *bool Указание на то, что потребляющее приложение должно использовать цвет линий сетки по умолчанию (зависит от системы). Переопределяет любой цвет, указанный в colorId, значение по умолчанию равно true
RightToLeft *bool Указание на то, находится ли лист в режиме отображения «справа налево». В этом режиме столбец A находится в крайнем правом углу, столбец B; на один столбец слева от столбца A и так далее. Также информация в ячейках отображается в формате справа налево, значение по умолчанию равно false
ShowFormulas *bool Указывая, должен ли этот лист отображать формулы, значение по умолчанию равно false
ShowGridLines *bool Указывая, должен ли этот лист отображать линии сетки, значение по умолчанию равно true
ShowRowColHeaders *bool Указывая, должен ли лист отображать заголовки строк и столбцов, значение по умолчанию равно true
ShowRuler *bool Указывая, что на этом листе должна отображаться линейка, значение по умолчанию равно true
ShowZeros *bool Указание на то, следует ли "показывать ноль в ячейках, имеющих нулевое значение". При использовании формулы для ссылки на другую ячейку, которая пуста, указанное значение становится 0, когда флаг true, значение по умолчанию true
TopLeftCell *string Задает расположение левой видимой верхней ячейки Расположение левой видимой ячейки в правой нижней панели (в режиме слева направо)
View *string Указывая, как отображается лист, по умолчанию он использует пустую строку, доступные опции: normal, pageBreakPreview и pageLayout
ZoomScale *float64 Задает увеличение масштаба окна для текущего представления, представляющего значения в процентах. Этот атрибут ограничен значениями в диапазоне от 10 до 400. Горизонтальный и вертикальный масштаб вместе, значение по умолчанию равно 100

Задать свойства представления листа

func (f *File) SetSheetView(sheet string, viewIndex int, opts *ViewOptions) error

SetSheetView задает свойства представления листа. viewIndex может быть отрицательным, и если это так, то отсчитывается в обратном порядке (-1 - последнее представление).

Получить свойства вида листа

func (f *File) GetSheetView(sheet string, viewIndex int) (ViewOptions, error)

GetSheetView получает значение свойств представления листа. viewIndex может быть отрицательным, и если это так, то отсчитывается в обратном порядке (-1 - последнее представление).

Установить макет страницы листа

func (f *File) SetPageLayout(sheet string, opts *PageLayoutOptions) error

SetPageLayout предоставляет функцию для установки макета страницы листа Доступные Варианты:

Size предоставляет метод для установки размера бумаги на листе, по умолчанию размер листа составляет "Письменная бумага (8.5 дюйм × 11 дюйм)". Ниже показан формат бумаги, отсортированный по номеру индекса Excelize:

Индекс Размер бумаги
1 Письменная бумага (8.5 дюйм × 11 дюйм)
2 Письмо на маленькой бумаге (8.5 дюйм × 11 дюйм)
3 Бульварная газета (11 дюйм × 17 дюйм)
4 Бухгалтерская бумага (17 дюйм × 11 дюйм)
5 Юридическая бумага (8.5 дюйм × 14 дюйм)
6 Заявление (5.5 дюйм × 8.5 дюйм)
7 Исполнительный документ (7.25 дюйм × 10.5 дюйм)
8 бумага А3 (297 мм × 420 мм)
9 бумага А4 (210 мм × 297 мм)
10 Маленькая бумага А4 (210 мм × 297 мм)
11 бумага А5 (148 мм × 210 мм)
12 бумага В4 (250 мм × 353 мм)
13 бумага В5 (176 мм × 250 мм)
14 Фолио бумага (8.5 дюйм × 13 дюйм)
15 Бумага-кварто (215 мм × 275 мм)
16 Стандартная бумага (10 дюйм × 14 дюйм)
17 Стандартная бумага (11 дюйм × 17 дюйм)
18 Бумага для заметок (8.5 дюйм × 11 дюйм)
19 Конверт №9 (3.875 дюйм × 8.875 дюйм)
20 Конверт №10 (4.125 дюйм × 9.5 дюйм)
21 Конверт №11 (4.5 дюйм × 10.375 дюйм)
22 Конверт №12 (4.75 дюйм × 11 дюйм)
23 Конверт №14 (5 дюйм × 11.5 дюйм)
24 бумага С (17 дюйм × 22 дюйм)
25 Д-бумага (22 дюйм × 34 дюйм)
26 И документы (34 дюйм × 44 дюйм)
27 конверт DL (110 мм × 220 мм)
28 конверт C5 (162 мм × 229 мм)
29 Конверт С3 (324 мм × 458 мм)
30 конверт С4 (229 мм × 324 мм)
31 Конверт C6 (114 мм × 162 мм)
32 Конверт C65 (114 мм × 229 мм)
33 Конверт B4 (250 мм × 353 мм)
34 Конверт B5 (176 мм × 250 мм)
35 Конверт B6 (176 мм × 125 мм)
36 Италия конверт (110 мм × 230 мм)
37 Конверт монарха (3.875 дюйм × 7.5 дюйм)
38 конверт 6¾ (3.625 дюйм × 6.5 дюйм)
39 Стандартный фанфолд США (14.875 дюйм × 11 дюйм)
40 Немецкий стандартный фанфолд (8.5 дюйм × 12 дюйм)
41 Немецкий юридический фанфолд (8.5 дюйм × 13 дюйм)
42 ISO B4 (250 мм × 353 мм)
43 Японская открытка (100 мм × 148 мм)
44 Стандартная бумага (9 дюйм × 11 дюйм)
45 Стандартная бумага (10 дюйм × 11 дюйм)
46 Стандартная бумага (15 дюйм × 11 дюйм)
47 Пригласительный конверт (220 мм × 220 мм)
50 Письмо дополнительная бумага (9.275 дюйм × 12 дюйм)
51 Юридическая дополнительная бумага (9.275 дюйм × 15 дюйм)
52 Дополнительная газета таблоида (11.69 дюйм × 18 дюйм)
53 дополнительная бумага А4 (236 мм × 322 мм)
54 Буква поперечная бумага (8.275 дюйм × 11 дюйм)
55 Поперечная бумага А4 (210 мм × 297 мм)
56 Буква экстра поперечная бумага (9.275 дюйм × 12 дюйм)
57 Бумага СуперА/СуперА/А4 (227 мм × 356 мм)
58 Бумага SuperB/SuperB/A3 (305 мм × 487 мм)
59 Письмо плюс бумага (8.5 дюйм × 12.69 дюйм)
60 А4 плюс бумага (210 мм × 330 мм)
61 Поперечная бумага А5 (148 мм × 210 мм)
62 Поперечная бумага JIS B5 (182 мм × 257 мм)
63 дополнительная бумага А3 (322 мм × 445 мм)
64 Дополнительная бумага А5. (174 мм × 235 мм)
65 Дополнительная бумага ISO B5 (201 мм × 276 мм)
66 бумага А2 (420 мм × 594 мм)
67 Поперечная бумага А3 (297 мм × 420 мм)
68 Дополнительная поперечная бумага А3 (322 мм × 445 мм)
69 Японская двойная открытка (200 мм × 148 мм)
70 A6 (105 мм × 148 мм)
71 Японский конверт Каку #2
72 Японский конверт Каку #3
73 Японский конверт Чоу #3
74 Японский конверт Чоу #4
75 Буква повернута (11 дюйм × 8½ дюйм)
76 A3 повернут (420 мм × 297 мм)
77 A4 повернут (297 мм × 210 мм)
78 A5 повернут (210 мм × 148 мм)
79 B4 (JIS) повернутый (364 мм × 257 мм)
80 B5 (JIS) повернутый (257 мм × 182 мм)
81 Японская открытка повернутая (148 мм × 100 мм)
82 Двойная японская открытка с поворотом (148 мм × 200 мм)
83 A6 повернут (148 мм × 105 мм)
84 Японский конверт Каку №2, повернутый
85 Японский конверт Каку №3, повернутый
86 Японский конверт Чоу №3, повернутый
87 Японский конверт Чоу №4, повернутый
88 B6 (JIS) (128 мм × 182 мм)
89 B6 (JIS) Rotated (182 мм × 128 мм)
90 12 дюйм × 11 дюйм
91 Японский конверт You №4
92 Японский конверт, который вы №4 перевернули
93 КНР 16К (146 мм × 215 мм)
94 КНР 32K (97 мм × 151 мм)
95 КНР 32К(Большой) (97 мм × 151 мм)
96 КНР Конверт №1 (102 мм × 165 мм)
97 КНР Конверт №2 (102 мм × 176 мм)
98 КНР Конверт №3 (125 мм × 176 мм)
99 КНР Конверт №4 (110 мм × 208 мм)
100 КНР Конверт №5 (110 мм × 220 мм)
101 КНР Конверт №6 (120 мм × 230 мм)
102 КНР Конверт №7 (160 мм × 230 мм)
103 КНР Конверт №8 (120 мм × 309 мм)
104 КНР Конверт №9 (229 мм × 324 мм)
105 КНР Конверт №10 (324 мм × 458 мм)
106 КНР 16К повёрнутый
107 КНР 32К повёрнутый
108 КНР 32К(Большой) Повернутый
109 Конверт №1 КНР повернут (165 мм × 102 мм)
110 Конверт №2 КНР повернут (176 мм × 102 мм)
111 Конверт №3 КНР повернут (176 мм × 125 мм)
112 Конверт №4 КНР повернут (208 мм × 110 мм)
113 Конверт №5 КНР повернут (220 мм × 110 мм)
114 Конверт №6 КНР повернут (230 мм × 120 мм)
115 Конверт №7 КНР повернут (230 мм × 160 мм)
116 Конверт №8 КНР повернут (309 мм × 120 мм)
117 Конверт №9 КНР повернут (324 мм × 229 мм)
118 Конверт №10 КНР повернут (458 мм × 324 мм)

Orientation указанная ориентация листа, по умолчанию — portrait. Возможные значения для этого поля — portrait и landscape.

FirstPageNumber указывает номер первой печатной страницы. Если значение не указано, то предполагается «автоматический».

AdjustTo указывает масштабирование печати. Этот атрибут ограничен значениями в диапазоне от 10 (10%) до 400 (400%). Этот параметр переопределяется, когда используются FitToWidth и/или FitToHeight.

FitToHeight указал количество вертикальных страниц, на которые можно поместиться.

FitToWidth указывал количество горизонтальных страниц, на которые можно поместиться.

BlackAndWhite указал печать черно-белую.

PageOrder определяет порядок нескольких страниц. Принимаемые значения: overThenDown и downThenOver.

Например, установите макет страницы для Sheet1 с черно-белой печатью, номер первой напечатанной страницы от 2, альбомная ориентация на маленькую бумагу A4 (210 мм на 297 мм), 2 вертикальные страницы для размещения и 2 горизонтальные страницы для размещения:

f := excelize.NewFile()
var (
    size                 = 10
    orientation          = "landscape"
    firstPageNumber uint = 2
    adjustTo        uint = 100
    fitToHeight          = 2
    fitToWidth           = 2
    blackAndWhite        = true
)
if err := f.SetPageLayout("Sheet1", &excelize.PageLayoutOptions{
    Size:            &size,
    Orientation:     &orientation,
    FirstPageNumber: &firstPageNumber,
    AdjustTo:        &adjustTo,
    FitToHeight:     &fitToHeight,
    FitToWidth:      &fitToWidth,
    BlackAndWhite:   &blackAndWhite,
}); err != nil {
    fmt.Println(err)
}

Получить макет страницы листа

func (f *File) GetPageLayout(sheet string) (PageLayoutOptions, error)

GetPageLayout предоставляет функцию для получения макета страницы листа.

Задать поля страницы листа

func (f *File) SetPageMargins(sheet string, opts *PageLayoutMarginsOptions) error

SetPageMargins предоставляет функцию для установки полей страницы рабочего листа. Доступные Варианты:

Параметры Тип Описание
Bottom *float64 Дно
Footer *float64 Колонтитул
Header *float64 Заголовок
Left *float64 Ліворуч
Right *float64 Правильно
Top *float64 Топ
Horizontally *bool Центр на странице: горизонтально
Vertically *bool По центру на странице: по вертикали

Получить поля страницы листа

func (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error)

GetPageMargins предоставляет функцию для получения полей страницы рабочего листа.

Установить свойства книги

func (f *File) SetWorkbookProps(opts *WorkbookPropsOptions) error

SetWorkbookProps предоставляет функцию для установки свойств книги. Доступные Варианты:

Параметры Тип Описание
Date1904 *bool Указывает, следует ли использовать систему дат 1900 или 1904 годов при преобразовании последовательной даты и времени в книге в даты.
FilterPrivacy *bool Задает логическое значение, указывающее, проверило ли приложение книгу на наличие личных сведений ( PII). Если этот флаг установлен, приложение предупреждает пользователя каждый раз, когда пользователь выполняет действие, которое вставляет PII в документ.
CodeName *string Задает кодовое имя приложения, создавшего эту книгу. Этот атрибут используется для отслеживания содержимого файла в добавочных выпусках приложения.

Получить свойства книги

func (f *File) GetWorkbookProps() (WorkbookPropsOptions, error)

GetWorkbookProps предоставляет функцию для получения свойств книги.

Установить верхний и нижний колонтитулы

func (f *File) SetHeaderFooter(sheet string, opts *HeaderFooterOptions) error

SetHeaderFooter предоставляет функцию установки верхних и нижних колонтитулов по заданному имени рабочего листа и управляющим символам.

Верхние и нижние колонтитулы указываются с помощью следующих полей настроек:

Поля Описание
AlignWithMargins Выравнивание полей нижнего колонтитула с полями страницы
DifferentFirst Различные индикаторы верхнего и нижнего колонтитула первой страницы
DifferentOddEven Различные нечетные и четные заголовки страниц и индикатор нижних колонтитулов
ScaleWithDoc Масштабирование верхнего и нижнего колонтитула с масштабированием документа
OddFooter Нижний колонтитул нечетной страницы или нижний колонтитул основной страницы, если параметр DifferentOddEven имеет значение false
OddHeader Нечетный заголовок или основной заголовок страницы, если значение DifferentOddEven равно false
EvenFooter Нижний колонтитул четной страницы
EvenHeader Заголовок четной страницы
FirstFooter Нижний колонтитул первой страницы
FirstHeader Заголовок первой страницы

Следующие коды форматирования могут использоваться в 6 полях строкового типа: OddHeader, OddFooter, EvenHeader, EvenFooter, FirstFooter, FirstHeader

Код форматирования Описание
&& Персонаж "&"
&font-size Размер шрифта текста, где font-size — десятичный размер шрифта в пунктах
&"font name,font type" Текстовая строка font-name, имя шрифта и текстовая строка font-type, тип шрифта
&"-,Regular" Обычный текстовый формат. Отключает полужирный и курсивный режимы
&A Имя вкладки текущего рабочего листа
&B or &"-,Bold" Формат полужирного текста, от выкл. к вкл. или наоборот. Режим по умолчанию выключен
&D Текущая дата
&C Центральная часть
&E Формат текста с двойным подчеркиванием
&F Имя файла текущей книги
&G Объект рисования в качестве фона (Использовать AddHeaderFooterImage)
&H Формат теневого текста
&I or &"-,Italic" Курсивный текстовый формат
&K Цвет шрифта текста
Цвет RGB указан как RRGGBB
Цвет темы указывается как TTSNNN, где TT — это идентификатор цвета темы, S — это "+" или "-" значения оттенка/оттенка, а NNN — это значение оттенка/оттенка.
&L Левая часть
&N Общее количество страниц
&O Контурный текстовый формат
&P[[+\|-]n] Без дополнительного суффикса номер текущей страницы в десятичном формате
&R Правая часть
&S Формат зачеркнутого текста
&T Текущее время
&U Формат текста с одним подчеркиванием. Если режим двойного подчеркивания включен, следующее вхождение в описателе раздела отключает режим двойного подчеркивания; в противном случае он переключает режим одинарного подчеркивания с выключенного на включенный или наоборот. Режим по умолчанию выключен
&X Надстрочный текстовый формат
&Y Текстовый формат нижнего индекса
&Z Путь к файлу текущей книги

Например:

err := f.SetHeaderFooter("Sheet1", &excelize.HeaderFooterOptions{
    DifferentFirst:   true,
    DifferentOddEven: true,
    OddHeader:        "&R&P",
    OddFooter:        "&C&F",
    EvenHeader:       "&L&P",
    EvenFooter:       "&L&D&R&T",
    FirstHeader:      `&CCenter &"-,Bold"Bold&"-,Regular"HeaderU+000A&D`,
})

Этот пример показывает:

  • Первая страница имеет свой собственный верхний и нижний колонтитулы
  • Нечетные и четные страницы имеют разные верхние и нижние колонтитулы
  • Номер текущей страницы в правой части заголовков нечетных страниц
  • Имя файла текущей книги в центральной части нижнего колонтитула
  • Номер текущей страницы в левой части заголовков четных страниц
  • текущая дата в левом разделе и текущее время в правом разделе нижнего колонтитула четных страниц
  • текст Center Bold Header в первой строке центральной части первой страницы и дата во второй строке центральной части той же страницы
  • Нет нижнего колонтитула на первой странице

Добавить изображение верхнего и нижнего колонтитула

func (f *File) AddHeaderFooterImage(sheet string, opts *HeaderFooterImageOptions) error

AddHeaderFooterImage предоставляет механизм для установки графики, на которую можно ссылаться в определениях верхнего и нижнего колонтитула с помощью &G, поддерживаемые типы изображений: EMF, EMZ, GIF, JPEG, JPG, PNG, SVG, TIF, TIFF, WMF и WMZ.

Установить определенное имя

func (f *File) SetDefinedName(definedName *DefinedName) error

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

err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "Amount",
    RefersTo: "Sheet1!$A$2:$D$5",
    Comment:  "defined name comment",
    Scope:    "Sheet2",
})

Параметры области печати и заголовков печати для рабочего листа:

Параметры области печати и заголовков печати для рабочего листа

if err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "_xlnm.Print_Area",
    RefersTo: "Sheet1!$A$1:$Z$100",
    Scope:    "Sheet1",
}); err != nil {
    fmt.Println(err)
}
if err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "_xlnm.Print_Titles",
    RefersTo: "Sheet1!$A:$A,Sheet1!$1:$1",
    Scope:    "Sheet1",
}); err != nil {
    fmt.Println(err)
}

Если вы заполните свойство RefersTo только одним диапазоном столбцов без запятой, оно будет работать только как "Столбцы для повторения слева". Например:

if err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "_xlnm.Print_Titles",
    RefersTo: "Sheet1!$A:$A",
    Scope:    "Sheet1",
}); err != nil {
    fmt.Println(err)
}

Если вы заполните свойство RefersTo только одним диапазоном строк без запятой, оно будет работать только как "Строки для повторения сверху". Например:

if err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "_xlnm.Print_Titles",
    RefersTo: "Sheet1!$1:$1",
    Scope:    "Sheet1",
}); err != nil {
    fmt.Println(err)
}

Получить определенное имя

func (f *File) GetDefinedName() []DefinedName

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

Удалить определенное имя

func (f *File) DeleteDefinedName(definedName *DefinedName) error

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

err := f.DeleteDefinedName(&excelize.DefinedName{
    Name:     "Amount",
    Scope:    "Sheet2",
})

Установить свойства приложения

func (f *File) SetAppProps(appProperties *AppProperties) error

SetAppProps предоставляет функцию для установки свойств приложения документа. Можно установить следующие свойства:

Недвижимость Описание
Application Имя приложения, создавшего этот документ.
ScaleCrop Указывает режим отображения эскиза документа. Установите для этого элемента значение true, чтобы разрешить масштабирование миниатюры документа для отображения. Установите для этого элемента значение false, чтобы разрешить обрезку эскиза документа, чтобы отображались только те разделы, которые подходят для отображения.
DocSecurity Уровень безопасности документа как числовое значение. Безопасность документа определяется как:
1 - Документ защищен паролем
2 - Документ рекомендуется открывать только для чтения
3 - Документ принудительно открывается только для чтения
4 - документ заблокирован для аннотации
Company The name of a company associated with the document.
LinksUpToDate Указывает, актуальны ли гиперссылки в документе. Установите для этого элемента значение true, чтобы указать, что гиперссылки обновлены. Установите для этого элемента значение false, чтобы указать, что гиперссылки устарели.
HyperlinksChanged Указывает, что одна или несколько гиперссылок в этой части были обновлены исключительно в этой части производителем. Следующий производитель, который откроет этот документ, должен обновить отношения гиперссылок новыми гиперссылками, указанными в этой части.
AppVersion Задает версию приложения, создавшего этот документ. Содержание этого элемента должно иметь форму XX.YYYY, где X и Y представляют собой числовые значения, в противном случае документ будет считаться несоответствующим.

Например:

err := f.SetAppProps(&excelize.AppProperties{
    Application:       "Microsoft Excel",
    ScaleCrop:         true,
    DocSecurity:       3,
    Company:           "Company Name",
    LinksUpToDate:     true,
    HyperlinksChanged: true,
    AppVersion:        "16.0000",
})

Получить свойства приложения

func (f *File) GetAppProps() (*AppProperties, error)

GetAppProps предоставляет функцию для получения свойств приложения документа.

Установить свойства документа

func (f *File) SetDocProps(docProperties *DocProperties) error

SetDocProps предоставляет функцию для установки основных свойств документа. Свойства, которые можно установить:

Недвижимость Описание
Category Категоризация содержимого этого пакета.
ContentStatus Статус контента. Например: значения могут включать Draft, Reviewed и Final
Created Время создания содержимого ресурса.
Creator Сущность, в первую очередь ответственная за создание контента ресурса.
Description Разъяснение содержания ресурса.
Identifier Однозначная ссылка на ресурс в данном контексте.
Keywords Набор ключевых слов с разделителями для поддержки поиска и индексации. Обычно это список терминов, которые недоступны в других местах свойств.
Language Язык интеллектуального содержания ресурса.
LastModifiedBy Пользователь, который выполнил последнюю модификацию. Идентификация зависит от окружающей среды.
Modified Время модификации содержимого ресурса.
Revision Номер редакции содержимого ресурса.
Subject Тема о содержании ресурса.
Title Название, данное ресурсу.
Version Номер версии. Это значение задается пользователем или приложением.

Например:

err := f.SetDocProps(&excelize.DocProperties{
    Category:       "category",
    ContentStatus:  "Draft",
    Created:        "2019-06-04T22:00:10Z",
    Creator:        "Go Excelize",
    Description:    "This file created by Go Excelize",
    Identifier:     "xlsx",
    Keywords:       "Spreadsheet",
    LastModifiedBy: "Go Author",
    Modified:       "2019-06-04T22:00:10Z",
    Revision:       "0",
    Subject:        "Test Subject",
    Title:          "Test Title",
    Language:       "en-US",
    Version:        "1.0.0",
})

Получить свойства документа

func (f *File) GetDocProps() (*DocProperties, error)

GetDocProps предоставляет функцию для получения основных свойств документа.

Установить свойства расчета

func (f *File) SetCalcProps(opts *CalcPropsOptions) error

SetCalcProps предоставляет функцию для установки свойств расчета.

Необязательное значение свойства CalcMode: manual, auto или autoNoTable.

Необязательное значение свойства RefMode: A1 или R1C1.

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

func (f *File) GetCalcProps() (CalcPropsOptions, error)

GetCalcProps предоставляет функцию для получения свойств расчета.

Защитить книгу

func (f *File) ProtectWorkbook(opts *WorkbookProtectionOptions) error

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

err := f.ProtectWorkbook(&excelize.WorkbookProtectionOptions{
    Password:      "password",
    LockStructure: true,
})

WorkbookProtectionOptions напрямую отображает параметры защиты книги.

type WorkbookProtectionOptions struct {
    AlgorithmName string
    Password      string
    LockStructure bool
    LockWindows   bool
}

Снять защиту с книги

func (f *File) UnprotectWorkbook(password ...string) error

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

results matching ""

    No results matching ""