Golang如何读取和遍历列数据

Golang如何读取和遍历列数据 我需要使用 Excelize 包从 Excel 中读取值。有没有读取 Excel 中所有列值的示例?

例如:

S.No. 类别

  1.  Test1
    
  2.  Test2
    
  3.  Test3
    

我将上述数据存储在 Excel 中。我需要获取类别列的长度并打印类别值(从 Test1 到 Test3)。

3 回复

好的,谢谢

更多关于Golang如何读取和遍历列数据的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你能将数据从Excel导出为CSV格式,然后直接使用标准库的encoding/csv来解析吗?

以下是使用 Excelize 包读取和遍历 Excel 中列数据的示例代码。该代码会读取指定工作表中的列数据,计算列长度,并打印列值。

package main

import (
    "fmt"
    "log"

    "github.com/xuri/excelize/v2"
)

func main() {
    // 打开 Excel 文件
    f, err := excelize.OpenFile("yourfile.xlsx")
    if err != nil {
        log.Fatal(err)
    }
    defer func() {
        if err := f.Close(); err != nil {
            log.Fatal(err)
        }
    }()

    // 获取工作表中所有行的数据
    rows, err := f.GetRows("Sheet1") // 假设数据在 Sheet1
    if err != nil {
        log.Fatal(err)
    }

    // 检查是否有数据行
    if len(rows) == 0 {
        fmt.Println("没有数据")
        return
    }

    // 假设第一行是标题行,例如 ["S.No.", "类别"]
    headers := rows[0]
    categoryColIndex := -1

    // 查找 "类别" 列的索引
    for i, header := range headers {
        if header == "类别" {
            categoryColIndex = i
            break
        }
    }

    if categoryColIndex == -1 {
        fmt.Println("未找到 '类别' 列")
        return
    }

    // 提取类别列的值(跳过标题行)
    var categories []string
    for _, row := range rows[1:] {
        if len(row) > categoryColIndex {
            categories = append(categories, row[categoryColIndex])
        }
    }

    // 获取类别列的长度并打印值
    fmt.Printf("类别列长度: %d\n", len(categories))
    for i, category := range categories {
        fmt.Printf("类别 %d: %s\n", i+1, category)
    }
}

输出示例(基于你的数据):

类别列长度: 3
类别 1: Test1
类别 2: Test2
类别 3: Test3

注意事项:

  • 确保 Excel 文件路径正确(示例中为 yourfile.xlsx)。
  • 如果工作表名称不是 “Sheet1”,请相应调整 GetRows 参数。
  • 该代码假设第一行是标题行,且 “类别” 列存在。如果数据结构不同,需要修改列索引逻辑。
回到顶部