美文网首页
Go语言excelize包-04-迭代器(行迭代器、列迭代器)

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

作者: 玄德公笔记 | 来源:发表于2022-09-16 23:52 被阅读0次

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工作簿

image.png

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

相关文章

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

    1. 列迭代器 创建测试表 liubei.xlsx 文件 sheet1 内容如下 序号IP110.10.118.1...

  • 我们来讲讲Python的迭代器

    迭代器 迭代器的作用:迭代器的作用就是迭代,可以让不是序列但是表现出序列行为,例如迭代字典的键,文件的行 迭代器的...

  • 迭代器

    本节实验我们将为大家讲解迭代器,主要介绍 5 种常见迭代器:输入、输出迭代器,前向逆向迭代器,双向迭代器和随机迭代...

  • Python进阶话题杂谈(一)迭代器与迭代器协议

    1 迭代器与for 迭代器(iterator),在许多现代编程语言,如C++,Java等中均有出现。迭代器不是一种...

  • 迭代器与生成器

    迭代(iteration)与可迭代(iterable) 迭代器 迭代器协议(iterator protocol) ...

  • 10.迭代器与生成器

    一、迭代器 1). 迭代器概述 类比Java中的迭代器,参考迭代器模式https://www.jianshu.co...

  • 9 ES6 迭代器、生成器

    1、Iterator迭代器 ->遵循迭代模式思想实现,分为内部迭代器、外部迭代器,聚焦点:添加迭代接口 (1).迭...

  • 5、迭代器实现

    闭包实现迭代器 迭代函数实现迭代器 --1,调用迭代函数,(把状态变量和控制变量当做参数传递给迭代函数) 状态变...

  • C++boolan part3_week4

    1. 迭代器 1.1 迭代器的种类 使用随机访问迭代器的容器:array, vector,deque使用双向迭代器...

  • 迭代器模式

    内部迭代器和外部迭代器 简单地讲,内部迭代器就是类似 forEach 的迭代器,其内部迭代逻辑已经制定好,只要传入...

网友评论

      本文标题:Go语言excelize包-04-迭代器(行迭代器、列迭代器)

      本文链接:https://www.haomeiwen.com/subject/ajysortx.html