详解Golang如何对excel进行处理
下面由go语言教程栏目给大家详解Golang如何对excel进行处理,希望对需要的朋友有所帮助!
之前有关Golang的文章主要是基于Golang的标准库来讲解的,今天我们来看看Golang的一个开源库,它可以用来处理xlsx文件,首先下载包
go get github.com/tealeg/xlsx
我们通过一个简单的例子看看这个包如何使用,这个例子主要实现输入列名,将表格中该列的所有数据进行显示。代码如下所示:
package main import ( "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更好一些。
以上是详解Golang如何对excel进行处理的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

在Go中安全地读取和写入文件至关重要。指南包括:检查文件权限使用defer关闭文件验证文件路径使用上下文超时遵循这些准则可确保数据的安全性和应用程序的健壮性。

如何为Go数据库连接配置连接池?使用database/sql包中的DB类型创建数据库连接;设置MaxOpenConns以控制最大并发连接数;设置MaxIdleConns以设定最大空闲连接数;设置ConnMaxLifetime以控制连接的最大生命周期。

原文标题:《这3个Excel财务函数,又是被低估了的函数!》本文作者:小花本文编辑:竺兰最近小花遇到一个有趣的问题,是来自一位老朋友的灵魂发问:怎么在月交年金和民间互保金融中做出选择?这两个理财产品的基本情况如下:月交年金:每月缴纳1000元,年化利率3%,2年期,到期一次性提取本息。互保金融:每月缴纳本金1000元,每月本金均按10%计息,2年期。同一产品共有24人参与,每个月必须有1人领取其他人缴纳的全部本息,领取之后的次月,必须支付100元/月的利息。如何比较这两种理财产品的优劣呢?我们可

GoLang框架与Go框架的区别体现在内部架构和外部特性上。GoLang框架基于Go标准库,扩展其功能,而Go框架由独立库组成,实现特定目的。GoLang框架更灵活,Go框架更容易上手。GoLang框架在性能上稍有优势,Go框架的可扩展性更高。案例:gin-gonic(Go框架)用于构建RESTAPI,而Echo(GoLang框架)用于构建Web应用程序。

可以通过使用gjson库或json.Unmarshal函数将JSON数据保存到MySQL数据库中。gjson库提供了方便的方法来解析JSON字段,而json.Unmarshal函数需要一个目标类型指针来解组JSON数据。这两种方法都需要准备SQL语句和执行插入操作来将数据持久化到数据库中。

最佳实践:使用明确定义的错误类型(errors包)创建自定义错误提供更多详细信息适当记录错误正确传播错误,避免隐藏或抑制根据需要包装错误以添加上下文

FindStringSubmatch函数可找出正则表达式匹配的第一个子字符串:该函数返回包含匹配子字符串的切片,第一个元素为整个匹配字符串,后续元素为各个子字符串。代码示例:regexp.FindStringSubmatch(text,pattern)返回匹配子字符串的切片。实战案例:可用于匹配电子邮件地址中的域名,例如:email:="user@example.com",pattern:=@([^\s]+)$获取域名match[1]。

后端学习路径:从前端转型到后端的探索之旅作为一名从前端开发转型的后端初学者,你已经有了nodejs的基础,...
