主要包
导入(
“bufio"
“fmt"
“os"
“;github.com/tealeg/xlsx"
)
函数main () {
如果len (os.Args) !=3 {
fmt.Println(“用法:xlsx路径名sheetname")
os.Exit (1)
}
xlsxFile犯错:=xlsx.OpenFile (os.Args [1])
如果犯错!=nil {
fmt.Println (err)
os.Exit (1)
}
表:=xlsxFile.Sheet [os.Args [2]]
如果表==nil {
fmt.Println(“表单名不存在“)
os.Exit (1)
}
为{
标题:=getStdinInput(“请输入列名:“)
如果标题==?“{
fmt.Println(标题)
继续
}
titleColIndex:=findColByTitle(表、标题)
如果titleColIndex==1 {
fmt.Println(“列名不存在“)
继续
}
rowLen:=len (sheet.Rows)
结果:{}=[]字符串
rowIndex:=1;rowIndex & lt;rowLen;rowIndex + + {
内容:=表。细胞(rowIndex titleColIndex) .String ()
结果=append(结果,内容)
}
fmt.Println(结果)
}
}
字符串函数getStdinInput(提示字符串){
fmt.Print(提示)
扫描仪:=bufio.NewScanner (os.Stdin)
如果scanner.Scan () {
返回scanner.Text ()
}
返回“;“
}
func findColByTitle(表* xlsx。表、标题字符串)int {
titleRow:=sheet.Rows [0]
titleIndex,上校:=titleRow范围。细胞{
如果col.String()==标题{
返回titleIndex
}
}
返回1
}
先看主函数,主函数首先进行命令行参数校验,使用该程序需要使用两个参数,一个是xlsx的路径,一个是需要使用的表单名称,之后打开xlsx文件和对应的表单,通过标准输入读取列名,然后在对应的表单中查找列名,通过遍历所有行,获取该列的所有数据。从标准输入读取数据和查找对应的列索引这里封装了两个函数。
getStdinInput()函数接收一个参数,作为输入的提示语句,该函数基于扫描仪获取标准输入的文本。
findColByTitle()函数传入两个参数:表单对象的指针和列名。通过遍历所有的标题行中的列,查找匹配的列索引并返回。
可以自己创建一个标准的xlsx文件,第一行是标题行,然后实用程序测试一下,之前有使用Python做Excel处理,但是感觉运行效率还是Golang更好一些。
感谢各位的阅读!关于Golang对Excel进行处理的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!