Потоковое создать файл

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) 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 завершает процесс потоковой записи.

results matching ""

    No results matching ""