英文:
How do I add columns to an existing excel worksheet using golang and excelize?
问题
我有一些Go代码,它打开一个电子表格,并且对于每一行,使用行中的lanid来查找一些数据。我想将这些派生数据作为表格中的两个新列添加进去。
打开表格并循环遍历所有行是可以的。我只是无法弄清楚如何添加新列。欢迎任何建议。
下面的代码抛出一个错误:
panic: runtime error: index out of range [7] with length 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
}
请注意,这只是你提供的代码的翻译,我无法提供关于代码的任何帮助或建议。
英文:
I have some go code that opens a spreadsheet and for each row, uses a lanid in the row to lookup some data. I would like to add this derived data as two new columns in the sheet.
Opening the sheet and looping over all the rows works fine. I just can't figure out how to add the new columns. Any suggestions welcome.
The code below throws an error of
panic: runtime error: index out of range [7] with length 7
like the columns haven't been added.
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
}
答案1
得分: 2
你可以使用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") // 再次调用GetRows来更新rows的值
if err != nil {
fmt.Println(err)
return
}
fmt.Println(rows)
英文:
You can set it by SetCellValue
function.
This is the example.
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论