Go语言excelize包-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工作簿

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-迭代器(行迭代器、列迭代器))