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