一些简单操作可以在官方文档中找到,应该足够无经验的朋友们入门
介绍 - 《Excelize v2.2 中文文档》 - 书栈网 · BookStack
这里贴一个中文版的链接(以excelize库为例,相对其他库来说,体验很不错),不过要注意该库是不支持.xls文件的,最好将要处理的文件从.xls复制到.xlsx中再进行处理。
具体说一下go操作excel的逻辑过程(有使用excel的基础会更好理解)
以简单的demo为例:
package main
import (
"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中。