Go语言excelize包-04-迭代器(行迭代器、列迭代器)

1. 列迭代器

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

序号IP
110.10.118.128
210.10.118.129
310.10.118.130
…………
3010.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)
	}
}
  • 结果
周一	周二	周三	周四	周五	周六	周日	
第一天上班	第二天上班	第三天上班	第四天上班	第五天上班	第一天加班	第二天加班

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值