Рабочая книга
Параметры
определяют параметры чтения и записи электронных таблиц.
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 предоставляет функцию для снятия защиты книги, для которой указан необязательный параметр пароля, чтобы снять защиту книги с проверкой пароля.