一些简单操作可以在官方文档中找到,应该足够无经验的朋友们入门
介绍 - 《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中是包含了很多张工作表的,所以在创建和之后写入数据时,都要指定插入哪个工作表。上边的代码运行后,打开生成的文件:
这时候可能一些小白会认为代码错误了,其实不然,只是代码中的工作表和默认表不是同一个:
第二张表才是真正生成的数据
第一次很容易犯这个错误。
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中。