下面由go语言教程栏目给大家详解Golang如何对excel进行处理,希望对需要的朋友有所帮助!

之前有关Golang的文章主要是基于Golang的标准库来讲解的,今天我们来看看Golang的一个开源库,它可以用来处理xlsx文件,首先下载包

go get github.com/tealeg/xlsx

我们通过一个简单的例子看看这个包如何使用,这个例子主要实现输入列名,将表格中该列的所有数据进行显示。代码如下所示:

package mainimport ("bufio""fmt""os""github.com/tealeg/xlsx")func main() {if len(os.Args) != 3 {fmt.Println("Usage: xlsx pathname sheetname")os.Exit(1)}xlsxFile, err := xlsx.OpenFile(os.Args[1])if err != nil {fmt.Println(err)os.Exit(1)}sheet := xlsxFile.Sheet[os.Args[2]]if sheet == nil {fmt.Println("表单名不存在")os.Exit(1)}for {title := getStdinInput("请输入列名:")if title == "" {fmt.Println(title)continue}titleColIndex := findColByTitle(sheet, title)if titleColIndex == -1 {fmt.Println("列名不存在")continue}rowLen := len(sheet.Rows)result := []string{}for rowIndex := 1; rowIndex < rowLen; rowIndex++ {content := sheet.Cell(rowIndex, titleColIndex).String()result = append(result, content)}fmt.Println(result)}}func getStdinInput(hint string) string {fmt.Print(hint)scanner := bufio.NewScanner(os.Stdin)if scanner.Scan() {return scanner.Text()}return ""}func findColByTitle(sheet *xlsx.Sheet, title string) int {titleRow := sheet.Rows[0]for titleIndex, col := range titleRow.Cells {if col.String() == title {return titleIndex}}return -1}

先看主函数,主函数首先进行命令行参数校验,使用该程序需要使用两个参数,一个是xlsx的路径,一个是需要使用的表单名称。之后打开xlsx文件和对应的表单,通过标准输入读取列名,然后在对应的表单中查找列名,通过遍历所有行,获取该列的所有数据。从标准输入读取数据和查找对应的列索引这里封装了两个函数。

getStdinInput()函数接收一个参数,作为输入的提示语句,该函数基于scanner获取标准输入的文本。

findColByTitle()函数传入两个参数:表单对象的指针和列名。通过遍历所有的标题行中的列,查找匹配的列索引并返回。

可以自己创建一个标准的xlsx文件,第一行是标题行,然后实用程序测试一下,之前有使用Python做Excel处理,但是感觉运行效率还是Golang更好一些。

更多相关文章

  1. go语言中普通函数与方法的区别是什么?
  2. 详解Go 中方法与函数的区别
  3. 关于golang封装一个bash函数,用于执行bash命令
  4. 总结Golang实现PHP常用函数
  5. PHP扩展之XML操作(三)——XML解析器使用及相关函数
  6. 实例简析XPath串函数和XSLT
  7. 使用XMLHTTP发送超长XML表单数据的详情
  8. 详细介绍使用XMLHTTP发送超长XML表单数据的详解
  9. 详解如何使用XMLHTTP发送超长XML表单数据

随机推荐

  1. 是今天网不好吗?
  2. Python 中更优雅的环境变量设置方案
  3. 就想写个爬虫,我到底要学多少东西啊?
  4. 史上规模最大的中文知识图谱以及估值两个
  5. 用Python获取公众号阅读数、点赞数。
  6. 数据探索很麻烦?推荐一款史上最强大的特征
  7. 给Python初学者的最好练手项目,进来看就对
  8. 长点心吧年轻人,利率不是这么算的!我用Pyth
  9. 说说开源那些事儿
  10. 5 种方法教你用Python玩转histogram直方