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) |
| 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) |
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) |
| } |
| } |
| 周一 周二 周三 周四 周五 周六 周日 |
| 第一天上班 第二天上班 第三天上班 第四天上班 第五天上班 第一天加班 第二天加班 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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文件权限