04-迭代器

1. 列迭代器

创建测试表 liubei.xlsx 文件 sheet1 内容如下

序号 IP
1 10.10.118.128
2 10.10.118.129
3 10.10.118.130
…… ……
30 10.10.118.157

1.1 垂直获取数据

  • 语法
func (f *File) Cols(sheet string) (*Cols, error)
  • Cols结构体:
type Cols struct {
err error
curCol, totalCols, totalRows, stashCol int
rawCellValue bool
sheet string
f *File
sheetXML []byte
}
  • 语法示例
cols,_ := f.Cols("Sheet1")
  • 完整示例

见下文

1.2 遍历列操作

  • 语法
func (cols *Cols) Next() bool

1.3 单列操作

  • 语法
func (cols *Cols) Rows(opts ...Options) ([]string, error)
  • 语法示例
col,_ := cols.Rows()

1.4 列迭代示例

  • 完整代码
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
//读取数据
f, err := excelize.OpenFile("liuBei.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
cols,_ := f.Cols("Sheet1")
for cols.Next() {
col,_ := cols.Rows()
for _, rowCell := range col {
fmt.Print(rowCell, "\t")
}
fmt.Println()
}
}
  • 结果显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
10.10.118.128 10.10.118.129 10.10.118.130 10.10.118.131 10.10.118.132 10.10.118.133 10.10.118.134 10.10.118.135 10.10.118.136 10.10.118.137 10.10.118.138 10.10.118.139 10.10.118.140 10.10.118.141 10.10.118.142 10.10.118.143 10.10.118.144 10.10.118.145 10.10.118.146 10.10.118.147 10.10.118.148 10.10.118.149 10.10.118.150 10.10.118.151 10.10.118.152 10.10.118.153 10.10.118.154 10.10.118.155 10.10.118.156 10.10.118.157

2. 行迭代器

创建liuBei.xlsx工作簿
在这里插入图片描述

2.1 获取行数据

  • 语法
func (f *File) Rows(sheet string) (*Rows, error)

2.2 遍历操作

  • 语法
func (rows *Rows) Next() bool

2.3 单行操作

  • 语法
func (rows *Rows) Columns(opts ...Options) ([]string, error)

2.4 关闭数据流

  • 语法
func (rows *Rows) Close() error

2.5 行迭代示例

  • 完整示例
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
//读取数据
f, err := excelize.OpenFile("liuBei.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
//行迭代
rows, _ := f.Rows("Sheet1")
for rows.Next() {
row,_ := rows.Columns()
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
if err = rows.Close(); err != nil {
fmt.Println(err)
}
}
  • 结果
周一 周二 周三 周四 周五 周六 周日
第一天上班 第二天上班 第三天上班 第四天上班 第五天上班 第一天加班 第二天加班

posted on   运维开发玄德公  阅读(8)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-09-16 01-ps命令详解和常用参数
2021-09-16 03-文件查找(ls,locate,find,xargs)
2021-09-16 02-查看CPU和内存
2021-09-16 01-查看系统和磁盘
2021-09-16 FAQ-用户管理相关
2021-09-16 03-sudo权限
2021-09-16 02-linux文件权限
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示