Scrittura in streaming
StreamWriter
ha definito il tipo di scrittore di flussi.
type StreamWriter struct {
File *File
Sheet string
SheetID int
// contiene campi filtrati o non esportati
}
Cell
può essere utilizzato direttamente in StreamWriter.SetRow
per specificare uno stile e un valore.
type Cell struct {
StyleID int
Formula string
Value interface{}
}
RowOpts
definisce le opzioni per la riga impostata, può essere utilizzato direttamente in StreamWriter.SetRow
per specificare lo stile e le proprietà della riga.
type RowOpts struct {
Height float64
Hidden bool
StyleID int
OutlineLevel int
}
Ottieni lo scrittore di flussi
func (f *File) NewStreamWriter(sheet string) (*StreamWriter, error)
NewStreamWriter restituisce la struttura dello scrittore di flusso in base al nome del foglio di lavoro specificato utilizzato per scrivere dati su un nuovo foglio di lavoro vuoto esistente con grandi quantità di dati. Tieni presente che dopo aver scritto i dati con lo stream writer per il foglio di lavoro, devi chiamare il metodo Flush
per terminare il processo di scrittura dello streaming, assicurarti che l'ordine dei numeri di riga sia crescente quando vengono impostate le righe e che le funzioni della modalità normale e della modalità stream non può essere un lavoro combinato con la scrittura dei dati sui fogli di lavoro. Lo stream writer proverà a utilizzare file temporanei sul disco per ridurre l'utilizzo della memoria quando i dati in memoria superano i 16 MB e al momento non è possibile ottenere il valore della cella. Ad esempio, imposta i dati per un foglio di lavoro di dimensioni 102400
righe x 50
colonne con numeri e stile:
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
sw, err := f.NewStreamWriter("Foglio1")
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: "Dati"},
[]excelize.RichTextRun{
{Text: "Ricco ", Font: &excelize.Font{Color: "2354E8"}},
{Text: "Testo", 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("Cartel1.xlsx"); err != nil {
fmt.Println(err)
}
Imposta il valore della cella e la formula della cella per un foglio di lavoro con lo stream writer:
err := sw.SetRow("A1", []interface{}{
excelize.Cell{Value: 1},
excelize.Cell{Value: 2},
excelize.Cell{Formula: "SUM(A1,B1)"}})
Imposta il valore della cella e lo stile delle righe per un foglio di lavoro con lo stream writer:
err := sw.SetRow("A1", []interface{}{
excelize.Cell{Value: 1}},
excelize.RowOpts{StyleID: styleID, Height: 20, Hidden: false})
Imposta il valore della cella e il livello della struttura della riga per un foglio di lavoro con lo stream writer:
err := sw.SetRow("A1", []interface{}{
excelize.Cell{Value: 1}}, excelize.RowOpts{OutlineLevel: 1})
Scrivi la riga del foglio nello streaming
func (sw *StreamWriter) SetRow(cell string, values []interface{}, opts ...RowOpts) error
SetRow scrive una matrice per lo streaming delle righe fornendo un riferimento alla cella iniziale e un puntatore a una matrice di valori. Tieni presente che devi chiamare la funzione Flush
per terminare il processo di scrittura dello streaming.
Aggiungi tabella allo streaming
func (sw *StreamWriter) AddTable(table *Table) error
AddTable crea una tabella Excel per StreamWriter
utilizzando l'intervallo di celle e il formato impostati.
Esempio 1, crea una tabella di A1:D5
:
err := sw.AddTable(&excelize.Table{Range: "A1:D5"})
Esempio 2, crea una tabella di F2:H6
con il formato impostato:
disable := false
err := sw.AddTable(&excelize.Table{
Range: "F2:H6",
Name: "tavolo",
StyleName: "TableStyleMedium2",
ShowFirstColumn: true,
ShowLastColumn: true,
ShowRowStripes: &disable,
ShowColumnStripes: true,
})
Tieni presente che la tabella deve contenere almeno due righe inclusa l'intestazione. Le celle di intestazione devono contenere stringhe e devono essere univoche. Attualmente è consentita solo una tabella per StreamWriter
. AddTable
deve essere chiamato dopo che le righe sono state scritte ma prima di Flush
. Vedi AddTable
per i dettagli sul formato della tabella.
Inserisci interruzione di pagina per lo streaming
func (sw *StreamWriter) InsertPageBreak(cell string) error
InsertPageBreak crea un'interruzione di pagina per determinare dove finisce la pagina stampata e dove inizia quella successiva in base a un determinato riferimento di cella, il contenuto prima dell'interruzione di pagina verrà stampato su una pagina e dopo l'interruzione di pagina su un'altra.
Imposta i riquadri per lo streaming
func (sw *StreamWriter) SetPanes(panes *Panes) error
SetPanes fornisce una funzione per creare e rimuovere riquadri bloccati e riquadri divisi fornendo opzioni di riquadri per StreamWriter
. Tieni presente che devi chiamare la funzione SetPanes
prima della funzione SetRow
.
Unisci la cella allo streaming
func (sw *StreamWriter) MergeCell(topLeftCell, bottomRightCell string) error
MergeCell fornisce una funzione per unire le celle in base a un determinato intervallo di riferimento per StreamWriter
. Non creare una cella unita che si sovrappone a un'altra cella unita esistente.
Imposta lo stile della colonna su streaming
func (sw *StreamWriter) SetColStyle(minVal, maxVal, styleID int) error
SetColStyle fornisce una funzione per impostare lo stile di una singola colonna o di più colonne per StreamWriter
. Nota che devi chiamare la funzione SetColStyle
prima della funzione SetRow
. Ad esempio, imposta lo stile della colonna H
:
err := sw.SetColStyle(8, 8, style)
Imposta la larghezza della colonna per lo streaming
func (sw *StreamWriter) SetColWidth(min, max int, width float64) error
SetColWidth fornisce una funzione per impostare la larghezza di una singola colonna o di più colonne per StreamWriter
. Tieni presente che devi chiamare la funzione SetColWidth
prima della funzione SetRow
. Ad esempio, imposta la larghezza della colonna B:C
come 20
:
err := sw.SetColWidth(2, 3, 20)
Flusso a streaming
func (sw *StreamWriter) Flush() error
Flush termina il processo di scrittura in streaming.