如何使用 golang 和 excelize 将列添加到现有 excel 工作表?

How do I add columns to an existing excel worksheet using golang and excelize?

我有一些 go 代码可以打开一个 spreadsheet 并且对于每一行,使用行中的 lanid 来查找一些数据。我想将此派生数据添加为 sheet.

中的两个新列

打开 sheet 并遍历所有行都可以正常工作。我只是不知道如何添加新列。欢迎任何建议。

下面的代码抛出一个错误

恐慌:运行时错误:索引超出范围 [7],长度为 7

好像还没有添加列。

f, e := excelize.OpenFile("apps.xlsx")
if e != nil {
    log.Fatal(err)
}

defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()

f.InsertCol("apps", "H")
f.InsertCol("apps", "H")

rows, err := f.GetRows("apps")
if err != nil {
    fmt.Println(err)
    return
}
for _, row := range rows {
    lanid := row[3]
    
    fmt.Print(lanid, "\t")
    fmt.Println()
    node := orgtee.lookup(lanid)
    row[7] = node.title
    row[8] = node.domain
}

可以通过SetCellValue函数设置。

这就是例子。

    for i := 1; i < len(rows); i++ {
        f.SetCellValue("apps", "G"+strconv.Itoa(i), "coba1")
        f.SetCellValue("apps", "H"+strconv.Itoa(i), "coba2")
        f.SetCellValue("apps", "I"+strconv.Itoa(i), "coba3")
    }

    rows, err = f.GetRows("apps") // call GetRows again to update rows value
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(rows)