Escrever em modo de fluxo

StreamWriter definiu o tipo de gravador de fluxo.

type StreamWriter struct {
    File    *File
    Sheet   string
    SheetID int
    // contém campos filtrados ou não exportados
}

Cell pode ser usado diretamente em StreamWriter.SetRow para especificar um estilo e um valor.

type Cell struct {
    StyleID int
    Formula string
    Value   interface{}
}

RowOpts define as opções para a linha definida, pode ser usado diretamente em StreamWriter.SetRow para especificar o estilo e as propriedades da linha.

type RowOpts struct {
    Height       float64
    Hidden       bool
    StyleID      int
    OutlineLevel int
}

Obtenha o gravador de fluxo

func (f *File) NewStreamWriter(sheet string) (*StreamWriter, error)

NewStreamWriter retorna a estrutura do gravador de fluxo por determinado nome de planilha usado para gravar dados em uma nova planilha vazia existente com grandes quantidades de dados. Observe que depois de gravar dados com o gravador de fluxo para a planilha, você deve chamar o método Flush para encerrar o processo de gravação de streaming, garantir que a ordem dos números das linhas seja crescente ao definir as linhas e que as funções do modo normal e as funções do modo de fluxo não possam trabalho misturado à gravação de dados nas planilhas. O gravador de fluxo tentará usar arquivos temporários no disco para reduzir o uso de memória quando a memória agrupar dados acima de 16 MB e você não conseguir obter o valor da célula neste momento. Por exemplo, defina dados para uma planilha de tamanho 102400 linhas x 50 colunas com números e estilo:

f := excelize.NewFile()
defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()
if err := f.SetSheetName("Sheet1", "Planilha1"); err != nil {
    fmt.Println(err)
    return
}
sw, err := f.NewStreamWriter("Planilha1")
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: "Dados"},
        []excelize.RichTextRun{
            {Text: "Texto ", Font: &excelize.Font{Color: "2354E8"}},
            {Text: "Rico", 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("Pasta1.xlsx"); err != nil {
    fmt.Println(err)
}

Defina o valor da célula e a fórmula da célula para uma planilha com gravador de fluxo:

err := sw.SetRow("A1", []interface{}{
    excelize.Cell{Value: 1},
    excelize.Cell{Value: 2},
    excelize.Cell{Formula: "SUM(A1,B1)"}})

Defina o valor da célula e o estilo das linhas para uma planilha com gravador de fluxo:

err := sw.SetRow("A1", []interface{}{
    excelize.Cell{Value: 1}},
    excelize.RowOpts{StyleID: styleID, Height: 20, Hidden: false})

Defina o valor da célula e o nível do contorno da linha para uma planilha com gravador de fluxo:

err := sw.SetRow("A1", []interface{}{
    excelize.Cell{Value: 1}}, excelize.RowOpts{OutlineLevel: 1})

Gravar linha da planilha para transmitir

func (sw *StreamWriter) SetRow(cell string, values []interface{}, opts ...RowOpts) error

SetRow grava um array para transmitir linhas, fornecendo uma referência de célula inicial e um ponteiro para um array de valores. Observe que você deve chamar a função Flush para encerrar o processo de gravação do streaming.

Adicionar tabela ao fluxo

func (sw *StreamWriter) AddTable(table *Table) error

AddTable cria uma tabela Excel para o StreamWriter usando o intervalo de células fornecido e o conjunto de formatos.

Exemplo 1, crie uma tabela de A1:D5:

err := sw.AddTable(&excelize.Table{Range: "A1:D5"})

Exemplo 2, crie uma tabela de F2:H6 com formato definido:

disable := false
err := sw.AddTable(&excelize.Table{
    Range:             "F2:H6",
    Name:              "tabela",
    StyleName:         "TableStyleMedium2",
    ShowFirstColumn:   true,
    ShowLastColumn:    true,
    ShowRowStripes:    &disable,
    ShowColumnStripes: true,
})

Observe que a tabela deve ter pelo menos duas linhas incluindo o cabeçalho. As células de cabeçalho devem conter strings e ser exclusivas. Atualmente apenas uma tabela é permitida para um StreamWriter. AddTable deve ser chamado depois que as linhas forem escritas, mas antes de Flush. Consulte AddTable para obter detalhes sobre o formato da tabela.

Insira quebra de página para transmitir

func (sw *StreamWriter) InsertPageBreak(cell string) error

InsertPageBreak cria uma quebra de página para determinar onde termina a página impressa e onde começa a próxima por uma determinada referência de célula, o conteúdo antes da quebra de página será impresso em uma página e depois da quebra em outra.

Definir painéis para transmitir

func (sw *StreamWriter) SetPanes(panes *Panes) error

SetPanes fornece uma função para criar e remover painéis congelados e divididos, fornecendo opções de painéis para o StreamWriter. Observe que você deve chamar a função SetPanes antes da função SetRow.

Mesclar célula para transmitir

func (sw *StreamWriter) MergeCell(topLeftCell, bottomRightCell string) error

MergeCell fornece uma função para mesclar células por uma determinada referência de intervalo para o StreamWriter. Não crie uma célula mesclada que se sobreponha a outra célula mesclada existente.

Definir estilo de coluna no fluxo

func (sw *StreamWriter) SetColStyle(minVal, maxVal, styleID int) error

SetColStyle fornece uma função para definir o estilo de uma única coluna ou de várias colunas para o StreamWriter. Observe que você deve chamar a função SetColStyle antes da função SetRow. Por exemplo, defina o estilo da coluna H:

err := sw.SetColStyle(8, 8, style)

Defina a largura da coluna para transmitir

func (sw *StreamWriter) SetColWidth(min, max int, width float64) error

SetColWidth fornece uma função para definir a largura de uma única coluna ou de várias colunas para o StreamWriter. Observe que você deve chamar a função SetColWidth antes da função SetRow. Por exemplo, defina a coluna de largura B:C como 20:

err := sw.SetColWidth(2, 3, 20)

Fluxo de descarga

func (sw *StreamWriter) Flush() error

Flush encerrando o processo de gravação do streaming.

results matching ""

    No results matching ""