使用go循环特定excel列

使用go循环特定excel列,excel,go,Excel,Go,在下面的代码中,我使用库从excel工作表中读取数据 我的问题是,.GetRows方法读取整个工作表,而我只想从几个列中获取数据 通过查看,我找不到基于列索引或名称提供数据的方法 尽管如此,是否有一种方法可以只从选定的几列中读取数据?或者以某种方式限制.GetRows方法的范围 代码如下: package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize" ) type AllData struc

在下面的代码中,我使用库从excel工作表中读取数据

我的问题是,
.GetRows
方法读取整个工作表,而我只想从几个列中获取数据

通过查看,我找不到基于列索引或名称提供数据的方法

尽管如此,是否有一种方法可以只从选定的几列中读取数据?或者以某种方式限制
.GetRows
方法的范围

代码如下:

package main 

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize"
)

type AllData struct {
    Name, Team, SSN string
}

var mapping []AllData

func main() {

    fileName := "Blad1"

    xlsx, err := excelize.OpenFile(fileName + ".xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }

    rows := xlsx.GetRows(fileName)
    for _, row := range rows[1:] {
        mapping = append(mapping, AllData{ Name: row[0] })
    }

    m := map[string]interface{}{
        "Data": mapping,
    }

    fmt.Println(m["Data"])
}

看起来至少还有两种方法

通过使用行迭代器

行,错误:=xlsx.rows(“Sheet1”)
如果出错!=零{
log.Fatal(错误)
}
对于行。下一个(){
行:=行。列()
fmt.Printf(“%s\t%s\n”,行[1],行[3])//打印列B和D中的值
}
或者如果你知道确切的范围

n:=10001
对于i:=1;i

我没有浏览库的源代码,因此它可能会或不会对性能和(或)内存使用产生影响。

看起来至少还有两种方法

通过使用行迭代器

行,错误:=xlsx.rows(“Sheet1”)
如果出错!=零{
log.Fatal(错误)
}
对于行。下一个(){
行:=行。列()
fmt.Printf(“%s\t%s\n”,行[1],行[3])//打印列B和D中的值
}
或者如果你知道确切的范围

n:=10001
对于i:=1;i

我没有查看库的源代码,因此它可能会或不会在性能和(或)内存使用方面产生影响。

第二个选项看起来很有希望,我明天会查看它,看看它是否产生了影响,谢谢!第二个选项快多了,为我节省了~4秒,再次感谢!第二个选择看起来很有希望,我明天会看一看,看看是否有不同,谢谢!第二个选项快多了,为我节省了~4秒,再次感谢!