用到的模块是github.com/tealeg/xlsx
参考链接:golang解析xlsx文件
测试文件的数据是:
//解析一个学号+姓名的表,并返回一个n×2的学号姓名字符串数组
func AnalyzeExcel(path string) [1000][2]string{
xlFile, err:= xlsx.OpenFile(path)//打开文件
if(err!=nil){
log.Println(err)
}
var result [1000][2] string
for _,sheet := range xlFile.Sheets {//遍历sheet层
for rowIndex, row := range sheet.Rows {//遍历row层
if (rowIndex > 0) {
if len(row.Cells) <2{
break
}
for cellIndex, cell := range row.Cells {//遍历cell层
text := cell.String()//把单元格的内容转成string
if(len(text)==0){
break
}
result[rowIndex-1][cellIndex] = text//为数组赋值
}
}
}
break//这里直接break是因为我这个测试用的文件只有1个sheet
}
for i:=0;i<3;i++{
fmt.Println(result[i][0]+result[i][1])
}
return result
}
运行结果:
涉及到3层循环:sheet层、row层、cell层,说人话就是:
1)sheet:
像这样,一个xlsx文件可以有多个sheet,所以sheet层的遍历相当于遍历每个sheet
2)row层:遍历每一行
3)cell层:遍历每一行中的每一个单元格
最后就是有一点,像这样的3层循环,你在对二维/三维数组进行赋值时,需要注意的是用来当坐标的变量有没有放对位置。