接上期:
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
}
最终代码:
完成了批量计算汇总