欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 5分钟精通Excel在go中的使用

5分钟精通Excel在go中的使用

2024/10/24 11:26:38 来源:https://blog.csdn.net/qq_63728673/article/details/142528254  浏览:    关键词:5分钟精通Excel在go中的使用

一些简单操作可以在官方文档中找到,应该足够无经验的朋友们入门

介绍 - 《Excelize v2.2 中文文档》 - 书栈网 · BookStack

这里贴一个中文版的链接(以excelize库为例,相对其他库来说,体验很不错),不过要注意该库是不支持.xls文件的,最好将要处理的文件从.xls复制到.xlsx中再进行处理。

具体说一下go操作excel的逻辑过程(有使用excel的基础会更好理解)

以简单的demo为例:

package mainimport ("fmt""log""github.com/xuri/excelize/v2"
)func main() {// 创建一个新的 Excel 文件f := excelize.NewFile()// 定义工作表名sheetName := "活动信息"// 创建一个工作表if _, err := f.NewSheet(sheetName); err != nil {log.Fatal("Error creating new sheet:", err)}// 定义标题行headers := []string{"活动主题", "活动负责人", "联系电话", "开始时间", "结束时间"}// 添加标题行到工作表for colIndex, header := range headers {cell, err := excelize.CoordinatesToCellName(colIndex+1, 1) // 第一行if err != nil {log.Fatal("Error generating cell name:", err)}if err := f.SetCellValue(sheetName, cell, header); err != nil {log.Fatal("Error setting header data:", err)}}// 填充活动数据activities := [][]string{{"志愿者活动", "张三", "123456789", "2024-01-01 10:00", "2024-01-01 12:00"},{"社区服务", "李四", "987654321", "2024-01-02 09:00", "2024-01-02 11:00"},}for rowIndex, activity := range activities {for colIndex, value := range activity {cell, err := excelize.CoordinatesToCellName(colIndex+1, rowIndex+2) // 从第二行开始if err != nil {log.Fatal("Error generating cell name:", err)}if err := f.SetCellValue(sheetName, cell, value); err != nil {log.Fatal("Error setting activity data:", err)}}}// 定义输出路径outputPath := "./活动信息.xlsx"// 保存文件if err := f.SaveAs(outputPath); err != nil {log.Fatal("Error saving Excel file:", err)}fmt.Println("Excel 文件已成功创建!路径:", outputPath)
}

包含了最基础的文件创建和写入功能,需要注意的是excel并不是只有文件名,一个excel中是包含了很多张工作表的,所以在创建和之后写入数据时,都要指定插入哪个工作表。上边的代码运行后,打开生成的文件:

image-20240925163632114

这时候可能一些小白会认为代码错误了,其实不然,只是代码中的工作表和默认表不是同一个:image-20240925163716356

第二张表才是真正生成的数据

image-20240925163737063

第一次很容易犯这个错误。

Excelize中插入图片的函数,

f.AddPicture(sheetName, cell, imagePath, &excelize.GraphicOptions{AutoFit:         true,Positioning:     "oneCell",LockAspectRatio: true, // 锁定宽高比...
});err != nil {return err}

sheetName是工作表名

cell是要插入的图片位置

imagePath需要写图片的路径

需要注意一点:图片直接改后缀,比如从png改为jpg,然后让该函数去识别,会报错:image: unknown format,所以我们需要在import中添加三个包:

_ "image/gif"
_ "image/jpeg"
_ "image/png"

易错点大概就这些了。总结来说的go操作excel不是很难,易上手,在开发中可以将数据拉取后放到数据库中进行存储,也可以将数据库中数据进行处理后存到excel中。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com