用 Golang 搞定篮球队人员名单 Excel 表格,这事儿我熟

说实话,我第一次用Golang处理篮球队人员名单Excel表格的时候,差点把键盘摔了,那会儿刚接手球队管理工作,教练扔给我一个...

说实话,我第一次用 Golang 处理篮球队人员名单 Excel 表格的时候,差点把键盘摔了,那会儿刚接手球队管理工作,教练扔给我一个 Excel 文件,里头全是队员信息——姓名、号码、位置、身高、体重、上场时间,甚至还有每个人的投篮命中率,你说这东西要是手动改,每回比赛完都得重填一遍,谁受得了?后来我琢磨着,干脆用 Go 写个小工具,自动化搞定。

为什么选 Golang 来处理篮球队人员名单?

你可能觉得,Excel 表格嘛,用 Python 不香吗?但咱得说实话,Go 的编译速度、跨平台能力,还有 标准库 里的 encoding/csvencoding/json,配合第三方库 excelize,处理起球队名单来,那叫一个顺手,关键是,编译出来的二进制文件就一个,扔到教练电脑上就能跑,不用装 Python 环境,这对于咱们这种非程序员出身的球队管理员来说,简直就是救星。

篮球队人员名单 Excel 表格长啥样?

先给你看我手头这份名单的结构,这玩意儿要是搞明白了,后面写代码就顺了。

球员姓名 球衣号码 位置 身高(cm) 体重(kg) 场均得分
张三 7 控球后卫 185 78 6
李四 23 小前锋 198 92 3
王五 34 中锋 210 110 8
赵六 11 得分后卫 192 85 7
孙七 5 大前锋 203 102 2

你看,就这么简单几列,但问题是,每回比赛完都要更新场均得分,有时候还要新增队员或者移除受伤的,手动搞真的太痛苦。

用 Go 读取篮球队人员名单 Excel 表格

下面这段代码,是我自己琢磨出来的,先用 excelize 打开文件,然后遍历每一行。

package main
import (
    "fmt"
    "github.com/xuri/excelize/v2"
)
func main() {
    f, err := excelize.OpenFile("篮球队人员名单.xlsx")
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer f.Close()
    // 获取默认工作表
    sheetName := f.GetSheetName(0)
    rows, err := f.GetRows(sheetName)
    if err != nil {
        fmt.Println("读取行失败:", err)
        return
    }
    for i, row := range rows {
        if i == 0 {
            continue // 跳过标题行
        }
        name := row[0]
        number := row[1]
        position := row[2]
        height := row[3]
        weight := row[4]
        score := row[5]
        fmt.Printf("球员: %s, 号码: %s, 位置: %s, 身高: %s, 体重: %s, 场均得分: %s\n",
            name, number, position, height, weight, score)
    }
}

这段代码跑起来之后,就能在终端里看到所有篮球队人员名单了。不过得注意excelize 默认把单元格内容都当成字符串来读,要是想算平均身高啥的,得用 strconv 转换一下。

往篮球队人员名单 Excel 里写入新数据

光读不行,还得能写,比如比赛完了,我要更新每个人的场均得分。

func updateScores(f *excelize.File, sheetName string) {
    rows, _ := f.GetRows(sheetName)
    for i, row := range rows {
        if i == 0 {
            continue
        }
        if len(row) < 6 {
            continue
        }
        // 假设每场比赛后,得分增加 2 分(这只是个例子)
        oldScore, _ := strconv.ParseFloat(row[5], 64)
        newScore := oldScore + 2.0
        cell := fmt.Sprintf("F%d", i+1) // 场均得分在第6列
        f.SetCellValue(sheetName, cell, newScore)
    }
    f.Save()
}

你看,通过 SetCellValue 就能直接修改 Excel 里的数据,以后教练再让我手动改,我就把这段代码甩给他。

篮球队人员名单的排序与筛选

有时候教练想看按身高排的名单,有时候想看按得分排的,我们可以在 Go 里先把数据读到结构体里,然后排序。

type Player struct {
    Name     string
    Number   int
    Position string
    Height   float64
    Weight   float64
    Score    float64
}
// 按身高排序
sort.Slice(players, func(i, j int) bool {
    return players[i].Height > players[j].Height
})

把排好序的数据再写回 Excel,就得到一份新的人员名单了。不过说实话,我更建议直接在代码里生成一个新的工作表,比如叫“按身高排序”,然后把原表留着。

处理特殊情况:受伤球员移除

打球嘛,受伤常有,我一般会在 Excel 里加一列“状态”,如果状态是“受伤”,就自动跳过。

球员姓名 球衣号码 位置 身高 体重 场均得分 状态
刘八 15 控卫 178 70 8 健康
周九 22 分卫 190 88 4 受伤

在代码里判断一下:

if row[6] == "受伤" {
    continue // 不输出到活动名单
}

这样生成的活动名单 Excel 里就不会有受伤队员了,教练拿着直接开战术会。

生成多个工作表的管理方案

我自己的做法是,一个 篮球队人员名单.xlsx 文件里放三个工作表:

  • 全部人员:所有注册球员
  • 活动名单:剔除受伤的
  • 历史数据:每场比赛后的快照

用 Go 创建一个新工作表很简单:

用 Golang 搞定篮球队人员名单 Excel 表格,这事儿我熟

f.NewSheet("活动名单")

然后把筛选后的数据写进去,这样教练每次打开 Excel,直接看“活动名单”那张表就行。

从 CSV 导入到 Excel

有时候别的球队发来的名单是 CSV 格式,用 Go 读取 CSV,再写入 Excel,也很方便。

csvRows, _ := csv.NewReader(strings.NewReader(csvData)).ReadAll()
for _, row := range csvRows {
    f.SetCellValue("Sheet1", "A1", row[0])
    // 等等
}

一点小坑和注意事项

excelize 的时候有个坑,Excel 单元格的坐标 是像 A1B2 这样,你得算清楚行号和列号,比如第 3 行第 4 列,对应的是 D3,我刚开始老搞错,后来写了个辅助函数:

func cellCoord(row, col int) string {
    colLetter := string(rune('A' + col))
    return fmt.Sprintf("%s%d", colLetter, row)
}

不过说实话,有时候也不完美,比如超过 26 列就不行了,但对于篮球队人员名单来说,一般也就十来列,够用了。

带点真实感的自动化流程

现在我的流程是这样的:每次比赛结束后,把技术统计贴到 Excel 里,然后运行 Go 程序,自动更新场均得分、自动生成活动名单、自动备份历史数据,整个过程不到 3 秒,教练每次都问我:“你咋这么快?”我就笑笑不说话。

记住excelize 库是开源的,GitHub 上能找到,文档写得挺好的,还有个叫 tealeg/xlsx 的库,不过我用 excelize 比较多,因为它支持更多 Excel 特性。

最后啰嗦一句,要是你的篮球队人员名单 Excel 表格太大,几千人那种,Go 处理起来也毫无压力,我就是从 15 个人的小球队开始的,慢慢玩熟了,后来帮好几个球队都写了类似的小工具,这玩意儿,真的能省下大把喝啤酒的时间。

本文来自作者[kyadmin]投稿,不代表678体育 - 全网热门体育赛事高清直播平台立场,如若转载,请注明出处:http://www.yuanlikao.com/nba/1689.html

(6)

文章推荐

发表回复

本站作者才能评论

评论列表(4条)

  • kyadmin
    kyadmin 2026-07-14

    我是678体育 - 全网热门体育赛事高清直播平台的签约作者“kyadmin”!

  • kyadmin
    kyadmin 2026-07-14

    希望本篇文章《用 Golang 搞定篮球队人员名单 Excel 表格,这事儿我熟》能对你有所帮助!

  • kyadmin
    kyadmin 2026-07-14

    本站[678体育 - 全网热门体育赛事高清直播平台]内容主要涵盖:678体育,678体育官网,678赛事直播

  • kyadmin
    kyadmin 2026-07-14

    本文概览:说实话,我第一次用Golang处理篮球队人员名单Excel表格的时候,差点把键盘摔了,那会儿刚接手球队管理工作,教练扔给我一个...

    联系我们

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们