接上期:

func TextEdit_click(a *walk.TextEdit) {

f, err := excelize.OpenFile("测试工作簿1.xlsx")

if err != nil {

fmt.Println(err)

return

}

a.SetTextColor(walk.RGB(byte(255), byte(48), byte(48)))

var sheetlist = f.GetSheetList()

// 获取工作表中一整列

i := 2 //从第2行读取

for true {

cell, _ := f.GetCellValue(sheetlist[0], "A"+strconv.Itoa(i))

if cell == "" {

break

}

cellB, _ := f.GetCellValue(sheetlist[0], "B"+strconv.Itoa(i))

cellC, _ := f.GetCellValue(sheetlist[0], "C"+strconv.Itoa(i))

cellD, _ := f.GetCellValue(sheetlist[0], "D"+strconv.Itoa(i))

a.AppendText(cell + "t" + cellB + "t" + cellC + "t" + cellD + "n")

i++

}

a.AppendText("n")

a.AppendText("欢迎关注“探索3000”")

}

完成结果图:


代码解释:在上一期基础上

使用a.AppendText(cell + "t" + cellB + "t" + cellC + "t" + cellD + "n")依次添加B、C、D列数据在图形界面,中间使用t制表符分隔,n换行

做完对上面这段代码字符拼接方式不满意,继续改进:

改进一:改进字符拼接方式

str1 = fmt.Sprintf("%vt %vt %vt %vn", cell, cellB, cellC, cellD)

a.AppendText(str1 + "n")

fmt.Sprintf对指定字符串进行格式处理,%v表示原始值

功能提升:准备对单价和数量进行汇总计算

前面使用了strconv.Itoa转换,理所当然想到应该用strconv.Atoi


以上代码从第2行开始对C列和D列进行汇总计算,发现strconv.Atoi出错

查看文档,才发现strconv.Atoi应该这样使用

i, err := strconv.Atoi(a) ,也就是要返回2个参数,后一个是error

知识点:

Go语言用这种方式来处理error

i, err := strconv.Atoi(a)

if err != nil {

fmt.Println("ERROR:", err)

os.Exit(1)

}

如果err返回值不空,就进行错误处理

因此要建立一个专门的函数

func Atoi(a string) int {

i, err := strconv.Atoi(a)

if err != nil {

fmt.Println("ERROR:", err)

panic(err)

}

return i

}

最终代码:


完成了批量计算汇总