从本期开始,有了前面的基础框架,我们可以在此基础上完善基本函数模块
首先在d:gopathsrctest目录下,也就是main.go同级目录创建一个excelpub.go,用于存放一些常用 的excel公共函数,其中许多小函数上一期已经使用过。
因为这个excelpub.go模块同属main包,这里面所有的函数可以直接在main.go中直接使用。集中存放方便管理,也减少main主程的代码量。通过学习制作常用函数模块,通过每一个知识点来掌握excelize的使用方法。在这个过程中也需要前面掌握的excel对象知识
//通用error检查
func checkerr(err error) {
if err != nil {
fmt.Println("ERROR:", err)
panic(err)
}
}
这个函数是最常用的error检查函数,放在第一个。当然还有其他error检查方式,这个是最常用的。其他需要特别检查的,就单独处理。
//string转int
func Atoi(a string) int {
i, err := strconv.Atoi(a)
checkerr(err) //需要检查错误,因为可能转换失败
return i
}
//int转string
func Itoa(i int) string {
return strconv.Itoa(i)
}
这个int和string互转的函数
//excel 列序号int 转 列名str,例如把 5转换为E
func Coli2a(i int) string {
s2, err := excelize.ColumnNumberToName(i)
checkerr(err)
return s2
}
//excel 列名str 转 列序号int:例如把E转换为5
func Cola2i(s string) int {
s2, err := excelize.ColumnNameToNumber(s)
checkerr(err)
return s2
}
这个是直接excel 列名str 与 列序号互转的函数,已经测试过支持到列字母最大是XFD,对应16384列
//excel列名str增减,支持0和负数,
func mycolstr(s string, i int) string {
col, err := excelize.ColumnNameToNumber(s) //列名转索引
checkerr(err)
s2, err := excelize.ColumnNumberToName(col + i)
checkerr(err)
return s2
}
excel列名str增减函数,例如mycolstr("B", 1)表示B+1的列,也就是C列,支持0和负数,负数就是反减。这样可以直接在列名上增减。
通过以上整理,我们终于有了一个可用的函数模块了。当然后期还可以根据需求增减修改。完善函数模块相当于累加积木。积木越多,使用越方便。其他工程要使用时,直接把excelpub.go复制过去,就可以直接使用。
后面我还将依托这些小函数,构建更大规模的结构。让使用更方便。
使用excel功能操作的用户,看不懂功能操作背后的东西
使用excel工具或者插件的用户,也看不懂工具背后的东西
公式用户总说一两个函数就轻松搞定,看不懂VBA用户的代码,觉得操作上太复杂。他们以为vba代码都要从第一行写起。
其实vba用户都准备了很多基础函数模块。一句代码能够完成多句公式函数甚至难以完成的任务。使用功能越多,基础代码积累越多。其实代码积木叠加的效果,就是增辐效应。
万丈高楼平地起,但代码积木是可以复制的,做过一个工程大楼,再做一个,复制修改下就行了。这就是为什么大家都说自己在搬砖。
我们现在有了GO语言平台,有了Go系统自带的很多强大函数模块,有了gitHub第三方支持库,我们使用起来就如虎添翼。