2021-10-09 来源:华纳网 责任编辑:韩玉玲 人气:
核心提示:生成Excel,支持大数据量生成

知识点:

生成大数据的Excel文件

 

本课内容:

大家好,欢迎来到谷雨课堂,

上一次,我们用Go来读取了Excel

上万行的文件全部读取也仅需2秒左右,

还有优化的空间,

 

今天我们来生成Excel文件 

 

在这个程序里,

谷雨老师还是写一个函数,

输入Excel文件的路径,

Excel的标题列,

以及输入一个数组,

就可以了

  •  
func WriteExcel(filename string,cols []string,data [][]string)

 

在谷雨老师的笔记本上(i5处理器)

生成1万行数据,每行3列,

共需约800毫秒,

速度还是非常不错的。

 

 

以下是全部代码:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
package main
import (  "fmt"  "strconv"  "time"
  "github.com/360EntSecGroup-Skylar/excelize")
//Excel各列的简称var CellCols = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
//生成Excel文件func WriteExcel(filename string, cols []string, data [][]string) {  xlsx := excelize.NewFile()
  for idx, colName := range cols {    xlsx.SetCellValue("Sheet1", fmt.Sprintf("%s%d", CellCols[idx], 1), colName)  }  for rowIdx, row := range data {    for colIdx, s := range row {      xlsx.SetCellValue("Sheet1", fmt.Sprintf("%s%d", CellCols[colIdx], rowIdx+2), s)    }  }  xlsx.SaveAs(filename)}
func main() {  //记录开始执行时间  start := time.Now()
  data := [][]string{}  for i := 1; i <= 10000; i++ {    data = append(data, []string{"用户名" + strconv.Itoa(i), "密码" + strconv.Itoa(i), "备注" + strconv.Itoa(i)})  }
  //读取一个1万行数据的excel文件  WriteExcel(    "write_10k.xlsx",    []string{"用户名", "密码", "备注"},    data,  )
  //计算总用时  elapsed := time.Since(start)
  fmt.Println("用时:", elapsed)}

 

 

完整的源代码可以登录【华纳网】下载。

https://www.worldwarner.com/




 

 





免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。