Потоковое создать файл
StreamWriter определил тип создателя потока.
type StreamWriter struct {
File *File
Sheet string
SheetID int
// содержит отфильтрованные или неэкспортированные поля
}
Cell можно использовать непосредственно в StreamWriter.SetRow для указания стиля и значения.
type Cell struct {
StyleID int
Formula string
Value interface{}
}
RowOpts определяет параметры для установленной строки, его можно использовать непосредственно в StreamWriter.SetRow для указания стиля и свойств строки.
type RowOpts struct {
Height float64
Hidden bool
StyleID int
OutlineLevel int
}
Получить потокового писателя
func (f *File) NewStreamWriter(sheet string) (*StreamWriter, error)
NewStreamWriter возвращает структуру записи потока по заданному имени рабочего листа, используемую для записи данных на новый существующий пустой рабочий лист с большими объемами данных. Обратите внимание, что после записи данных с помощью средства записи потока для рабочего листа вы должны вызвать метод Flush, чтобы завершить процесс записи потоковой передачи, убедиться, что порядок номеров строк является возрастающим при задании строк, а также функции нормального режима и функции потокового режима. нельзя совмещать работу с записью данных на рабочих листах. Модуль записи потока попытается использовать временные файлы на диске, чтобы уменьшить использование памяти, когда в памяти фрагменты данных превышают 16 МБ, и вы не можете получить значение ячейки в это время. Например, установите данные для рабочего листа размером 102400 строк x 50 столбцов с номерами и стилем:
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
sw, err := f.NewStreamWriter("Sheet1")
if err != nil {
fmt.Println(err)
return
}
styleID, err := f.NewStyle(&excelize.Style{Font: &excelize.Font{Color: "777777"}})
if err != nil {
fmt.Println(err)
return
}
if err := sw.SetRow("A1",
[]interface{}{
excelize.Cell{StyleID: styleID, Value: "Data"},
[]excelize.RichTextRun{
{Text: "Rich ", Font: &excelize.Font{Color: "2354E8"}},
{Text: "Text", Font: &excelize.Font{Color: "E83723"}},
},
},
excelize.RowOpts{Height: 45, Hidden: false}); err != nil {
fmt.Println(err)
return
}
for rowID := 2; rowID <= 102400; rowID++ {
row := make([]interface{}, 50)
for colID := 0; colID < 50; colID++ {
row[colID] = rand.Intn(640000)
}
cell, err := excelize.CoordinatesToCellName(1, rowID)
if err != nil {
fmt.Println(err)
break
}
if err := sw.SetRow(cell, row); err != nil {
fmt.Println(err)
break
}
}
if err := sw.Flush(); err != nil {
fmt.Println(err)
return
}
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
Задайте значение ячейки и формулу ячейки для рабочего листа с помощью средства записи потока:
err := sw.SetRow("A1", []interface{}{
excelize.Cell{Value: 1},
excelize.Cell{Value: 2},
excelize.Cell{Formula: "SUM(A1,B1)"}})
Задайте значение ячейки и стиль строк для рабочего листа с помощью средства записи потока:
err := sw.SetRow("A1", []interface{}{
excelize.Cell{Value: 1}},
excelize.RowOpts{StyleID: styleID, Height: 20, Hidden: false})
Задайте значение ячейки и уровня строки для рабочего листа с помощью средства записи потока:
err := sw.SetRow("A1", []interface{}{
excelize.Cell{Value: 1}}, excelize.RowOpts{OutlineLevel: 1})
Запись строки листа в поток
func (sw *StreamWriter) SetRow(cell string, values []interface{}, opts ...RowOpts) error
SetRow записывает массив в строку потока по заданной начальной координате и указателю на массив типа slice. Обратите внимание, что вы должны вызвать метод Flush, чтобы завершить процесс потоковой записи.
Добавить таблицу в поток
func (sw *StreamWriter) AddTable(table *Table) error
AddTable создает таблицу Excel для StreamWriter, используя заданную область координат и набор форматов.
Пример 1, создайте таблицу A1:D5:
err := sw.AddTable(&excelize.Table{Range: "A1:D5"})
Пример 2, создайте таблицу F2:H6 с установленным форматом:
disable := false
err := sw.AddTable(&excelize.Table{
Range: "F2:H6",
Name: "table",
StyleName: "TableStyleMedium2",
ShowFirstColumn: true,
ShowLastColumn: true,
ShowRowStripes: &disable,
ShowColumnStripes: true,
})
Обратите внимание, что таблица должна состоять как минимум из двух строк, включая заголовок. Ячейки заголовка должны содержать строки и быть уникальными. В настоящее время для StreamWriter разрешена только одна таблица. AddTable должен вызываться после записи строк, но до Flush. См. AddTable для получения подробной информации о формате таблицы.
Вставить разрыв страницы в поток
func (sw *StreamWriter) InsertPageBreak(cell string) error
InsertPageBreak создает разрыв страницы, чтобы определить, где заканчивается напечатанная страница и где начинается следующая по заданной ссылке на ячейку, содержимое до разрыва страницы будет напечатано на одной странице, а после разрыва страницы — на другой.
Записать оконную панель в поток
func (sw *StreamWriter) SetPanes(panes *Panes) error
SetPanes предоставляет функцию для создания и удаления стоп-панелей и разделенных панелей, предоставляя параметры панелей для StreamWriter. Обратите внимание, что вы должны вызывать функцию SetPanes перед функцией SetRow.
Объединить ячейку в поток
func (sw *StreamWriter) MergeCell(topLeftCell, bottomRightCell string) error
MergeCell предоставляет функцию объединения ячеек по заданной области координат для StreamWriter. Не создавайте объединенную ячейку, которая перекрывается с другой существующей объединенной ячейкой.
Установить структуру столбцов в потоке
func (sw *StreamWriter) SetColOutlineLevel(col int, level uint8) error
Функция SetColOutlineLevel позволяет установить уровень структуры отдельного столбца для объекта StreamWriter. Значение параметра level варьируется от 1 до 7. Обратите внимание, что функцию SetColOutlineLevel необходимо вызывать перед функцией SetRow. Например, установите уровень структуры столбца D равным 2:
err := sw.SetColOutlineLevel(4, 2)
Установить стиль столбца в потоке
func (sw *StreamWriter) SetColStyle(minVal, maxVal, styleID int) error
SetColStyle предоставляет функцию для установки стиля одного или нескольких столбцов для StreamWriter. Обратите внимание, что вы должны вызвать функцию SetColStyle перед функцией SetRow. Например, установите стиль столбца H:
err := sw.SetColStyle(8, 8, style)
Настройка видимости столбцов в потоке
func (sw *StreamWriter) SetColVisible(minVal, maxVal int, visible bool) error
Функция SetColVisible позволяет установить видимость одного или нескольких столбцов для объекта StreamWriter. Обратите внимание, что функцию SetColVisible необходимо вызывать перед функцией SetRow. Например, скрыть столбец D:
err := sw.SetColVisible(4, 4, false)
Скрыть столбцы от D до F (включительно):
err := sw.SetColVisible(4, 6, false)
Установите ширину столбца в потоке
func (sw *StreamWriter) SetColWidth(min, max int, width float64) error
SetColWidth предоставляет функцию для настройки ширины одной колонки или нескольких столбцов для StreamWriter. Обратите внимание, что вы должны позвонить функции SetColWidth перед функцией SetRow. Например, установите столбец ширины B:C как 20:
err := sw.SetColWidth(2, 3, 20)
Flush поток
func (sw *StreamWriter) Flush() error
Flush завершает процесс потоковой записи.