获取流式写入器

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

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

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