流式写入

    Cell 在 StreamWriter.SetRow 中使用,用于指定单元格的值、公式和样式。

    1. StyleID int
    2. Formula string
    3. Value interface{}
    4. }

    RowOpts 在 StreamWriter.SetRow 中使用,用于设置行样式。

    1. type RowOpts struct {
    2. Height float64
    3. Hidden bool
    4. StyleID int
    5. }
    1. func (f *File) NewStreamWriter(sheet string) (*StreamWriter, error)

    NewStreamWriter 通过给定的工作表名称返回流式写入器,用于生成包含大规模数据的工作表。请注意通过此方法按行向工作表写入数据后,必须调用 函数来结束流式写入过程,并需要确所保写入的行号是递增的,普通 API 不能与流式 API 混合使用在工作表中写入数据。例如,向工作表流式按行写入 102400 行 x 50 列带有样式的数据:

    1. file := excelize.NewFile()
    2. if err != nil {
    3. fmt.Println(err)
    4. }
    5. styleID, err := file.NewStyle(&excelize.Style{Font: &excelize.Font{Color: "#777777"}})
    6. fmt.Println(err)
    7. }
    8. if err := streamWriter.SetRow("A1", []interface{}{
    9. excelize.Cell{StyleID: styleID, Value: "Data"}}); err != nil {
    10. fmt.Println(err)
    11. }
    12. for rowID := 2; rowID <= 102400; rowID++ {
    13. row := make([]interface{}, 50)
    14. for colID := 0; colID < 50; colID++ {
    15. row[colID] = rand.Intn(640000)
    16. }
    17. cell, _ := excelize.CoordinatesToCellName(1, rowID)
    18. if err := streamWriter.SetRow(cell, row); err != nil {
    19. }
    20. }
    21. if err := streamWriter.Flush(); err != nil {
    22. fmt.Println(err)
    23. if err := file.SaveAs("Book1.xlsx"); err != nil {
    24. fmt.Println(err)
    25. }

    流式设置单元格的值和行样式:

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

    按行流式写入工作表

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

    SetRow 通过给定的起始坐标和指向数组类型“切片”的指针将数据按行流式写入工作表中。请注意,在设置行之后,必须调用 函数来结束流式写入过程,并需要确所保写入的行号是递增的。

    1. func (sw *StreamWriter) AddTable(hCell, vCell, format string) error

    根据给定的单元格坐标区域和条件格式流式创建表格。

    1. err := streamWriter.AddTable("A1", "D5", "")

    例2,在工作表 F2:H6 区域创建带有条件格式的表格:

    注意,表格坐标区域至少需要包含两行:字符型的标题行和内容行。每列标题行的字符需保证是唯一的,当前仅支持在每个工作表中流式创建一张表格,并且必须在调用该函数前通过 流式设置表格的标题行数据。支持的表格样式与非流式创建表格 AddTable 相同。

    流式合并单元格

    1. func (sw *StreamWriter) MergeCell(hCell, vCell string) error

    通过给定的单元格坐标区域流式合并单元格,当前仅支持合并非交叠区域单元格。

    1. func (sw *StreamWriter) SetColWidth(min, max int, width float64) error
    1. err := streamWriter.SetColWidth(2, 3, 20)

    结束流式写入

    1. func (sw *StreamWriter) Flush() error

    Flush 用于结束流式写入过程。