github.com/tealeg/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层循环,你在对二维/三维数组进行赋值时,需要注意的是用来当坐标的变量有没有放对位置。