Streaming-Schreiben

StreamWriter hat den Typ des Stream-Writers definiert.

type StreamWriter struct {
    File    *File
    Sheet   string
    SheetID int
    // enthält gefilterte oder nicht exportierte Felder
}

Cell kann direkt in StreamWriter.SetRow verwendet werden, um einen Stil und einen Wert anzugeben.

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

RowOpts definieren die Optionen für die eingestellte Zeile, sie kann direkt in StreamWriter.SetRow verwendet werden, um den Stil und die Eigenschaften der Zeile anzugeben.

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

Stream-Writer abrufen

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

NewStreamWriter gibt die Stream-Writer-Struktur nach dem angegebenen Arbeitsblattnamen zurück, die zum Schreiben von Daten in ein neues vorhandenes leeres Arbeitsblatt mit großen Datenmengen verwendet wird. Beachten Sie, dass Sie nach dem Schreiben von Daten mit dem Stream-Writer für das Arbeitsblatt die Methode Flush aufrufen müssen, um den Streaming-Schreibvorgang zu beenden. Außerdem müssen Sie sicherstellen, dass die Reihenfolge der Zeilennummern beim Festlegen von Zeilen aufsteigend ist, sowie die Funktionen im Normalmodus und im Stream-Modus Die Arbeit kann nicht mit dem Schreiben von Daten auf die Arbeitsblätter gemischt werden. Der Stream-Writer versucht, temporäre Dateien auf der Festplatte zu verwenden, um die Speichernutzung zu reduzieren, wenn In-Memory-Chunks Daten über 16 MB aufteilen und Sie derzeit keinen Zellenwert erhalten können. Legen Sie beispielsweise Daten für ein Arbeitsblatt mit der Größe 102400 Zeilen x 50 Spalten mit Zahlen und Stil fest:

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)
}

Festlegen des Zellenwerts und der Zellformel für ein Arbeitsblatt mit Stream Writer:

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

Legen Sie den Zellenwert und den Zeilenstil für ein Arbeitsblatt mit Stream Writer fest:

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

Legen Sie den Zellenwert und die Zeilengliederungsebene für ein Arbeitsblatt mit Stream Writer fest:

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

Schreiben der Zulaufzeile

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

SetRow schreibt ein Array in die Stream-Zeile, indem eine Startkoordinate und ein Zeiger auf den Array-Typ slice angegeben werden. Beachten Sie, dass Sie die Methode Flush aufrufen müssen, um den Streaming-Schreibvorgang zu beenden.

Fügen Sie eine Tabelle zum Streamen hinzu

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

AddTable erstellt eine Excel-Tabelle für den StreamWriter unter Verwendung des angegebenen Koordinatenbereichs und Formatsatzes.

Beispiel 1: Erstellen Sie eine Tabelle mit A1:D5:

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

Beispiel 2: Erstellen Sie eine Tabelle mit F2:H6 mit dem folgenden Format:

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

Beachten Sie, dass die Tabelle mindestens zwei Zeilen einschließlich der Kopfzeile enthalten muss. Die Header-Zellen müssen Zeichenfolgen enthalten und eindeutig sein. Derzeit ist nur eine Tabelle für einen StreamWriter zulässig. AddTable muss aufgerufen werden, nachdem die Zeilen geschrieben wurden, jedoch vor Flush. Weitere Informationen zum Tabellenformat finden Sie unter AddTable.

Seitenumbruch zum Streamen einfügen

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

InsertPageBreak erstellt einen Seitenumbruch, um festzulegen, wo die gedruckte Seite endet und wo die nächste beginnt. Durch einen gegebenen Zellbezug wird der Inhalt vor dem Seitenumbruch auf eine Seite gedruckt und nach dem Seitenumbruch auf eine andere.

Stellen Sie Fensterbereiche auf Stream ein

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

SetPanes bietet eine Funktion zum Erstellen und Entfernen von Einfrierfenstern und geteilten Fenstern, indem es Fensteroptionen für den StreamWriter gibt. Beachten Sie, dass Sie die Funktion SetPanes vor der Funktion SetRow aufrufen müssen.

Zelle zum Streaming zusammenführen

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

MergeCell bietet eine Funktion zum Zusammenführen von Zellen nach einem bestimmten Koordinatenbereich für den StreamWriter. Erstellen Sie keine zusammengeführte Zelle, die sich mit einer anderen vorhandenen zusammengeführten Zelle überschneidet.

Festlegen der Spaltenbreite für den Stream

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

SetColWidth bietet eine Funktion zum Festlegen der Breite einer einzelnen Spalte oder mehrerer Spalten für den StreamWriter. Beachten Sie, dass Sie die Funktion SetColWidth vor der Funktion SetRow aufrufen müssen. Legen Sie beispielsweise die Breitenspalte B:C als 20 fest:

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

Flush-Stream

func (sw *StreamWriter) Flush() error

Flush beendet den Streaming-Schreibvorgang.

results matching ""

    No results matching ""