2021-09-28 来源:华纳网 责任编辑:谷雨老师 人气:
核心提示:大家好,欢迎来到谷雨课堂,本节我们来读取Excel文件。

知识点:

读取大数据量的Excel文件

 

 

本课内容:

 

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

本节我们来读取Excel文件,

Excel文件是处理大量数据较为方便的数据格式,

Excel可以容纳大量的数据,

通常可以达到数万条数据

其中Excel的扩展有两种,xls和xlsx

今天我们进行文件内容的读取

在读取过程中,

我们仅需要各单元格的内容,

所以单元格里的格式通常都是被忽略掉的,

也就是说把Excel当成简易的数据库使用了,

在Excel的第一行,通常是列名(字段名)

 

在这个程序里,

谷雨老师写了一个函数,

输入Excel文件的路径,

同时兼容xls和xlsx两种格式,

输出一个数组,

包括文件所有内容(仅读取第一行工作表)

其中第一行的内容就当作列名,

 

  •  
func ReadExcel(filename string) []map[string]string

 

 

在谷雨老师的笔记本上

读取1万行数据,每行3列,

约2秒就可以完成,

速度还是非常不错的。

 

 

以下是全部代码:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
package mainimport ("fmt""time"
"github.com/360EntSecGroup-Skylar/excelize")
//读取Excel文件,返回行列数组func ReadExcel(filename string) []map[string]string {  ret := []map[string]string{}  f, err := excelize.OpenFile(filename)if err != nil {    fmt.Println("读取Excel文件出错", err.Error())return ret  }  sheets := f.GetSheetMap()  fmt.Println(sheets)  sheet1 := sheets[1]  fmt.Println("第一个工作表:", sheet1)  rows := f.GetRows(sheet1)  cols := []string{}for i, row := range rows {if i == 0 {for _, colCell := range row {        cols = append(cols, colCell)      }      fmt.Println("列信息", cols)    } else {      theRow := map[string]string{}for j, colCell := range row {//log.Println(fmt.Sprintf("%d.%d=%s", i, j, colCell))        k := cols[j]        theRow[k] = colCell      }      ret = append(ret, theRow)    }  }return ret}
func main() {//记录开始执行时间  start := time.Now()
//读取一个1万行数据的excel文件  arr := ReadExcel("demo10k.xlsx")
//计算总用时  elapsed := time.Since(start)
//输出信息  fmt.Println("记录数:", len(arr))  fmt.Println("用时:", elapsed)}

 

 

 

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

 

https://www.worldwarner.com/

 





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