Golang如何读取和遍历列数据
Golang如何读取和遍历列数据 我需要使用 Excelize 包从 Excel 中读取值。有没有读取 Excel 中所有列值的示例?
例如:
S.No. 类别
-
Test1 -
Test2 -
Test3
我将上述数据存储在 Excel 中。我需要获取类别列的长度并打印类别值(从 Test1 到 Test3)。
3 回复
你能将数据从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参数。 - 该代码假设第一行是标题行,且 “类别” 列存在。如果数据结构不同,需要修改列索引逻辑。

