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 2022-09-16 23:46  运维开发玄德公  阅读(6)  评论(0编辑  收藏  举报  来源

导航