废话少说直接上代码:
//如何生成一个简单的文档,代码如下:
//先导入github.com/360EntSecGroup-Skylar/excelize/v2包
f := excelize.NewFile()
// 创建一个工作表
index := f.NewSheet("Sheet2")
// 设置单元格的值
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// 设置工作簿的默认工作表
f.SetActiveSheet(index)
// 根据指定路径保存文件
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
//如何在文档里插入图片(插入的图片是本地图片)
//先导入 _ "image/gif"
// _ "image/jpeg"
// _ "image/png"包
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
// 插入图片
if err := f.AddPicture("Sheet1", "A2", "image.png", ""); err != nil {
fmt.Println(err)
}
// 在工作表中插入图片,并设置图片的缩放比例
if err := f.AddPicture("Sheet1", "D2", "image.jpg", `{
"x_scale": 0.5,
"y_scale": 0.5
}`); err != nil {
fmt.Println(err)
}
// 在工作表中插入图片,并设置图片的打印属性
if err := f.AddPicture("Sheet1", "H2", "image.gif", `{
"x_offset": 15,
"y_offset": 10,
"print_obj": true,
"lock_aspect_ratio": false,
"locked": false
}`); err != nil {
fmt.Println(err)
}
// 保存文件
if err = f.Save(); err != nil {
fmt.Println(err)
}
//在文档里插入七牛云的图片(因为七牛云的图片是没有后缀名的,所以我们要进行处理一下),代码如下:
//先导入 _ "image/gif"
// _ "image/jpeg"
// _ "image/png"包
url := "域名/FgGJwfAZ2M1fSLJZabGx1VcfvNeZ"//图片的链接
//存图片
rest, err := http.Get(url)
defer rest.Body.Close()
if err != nil {
fmt.Println(err)
}
body, err := ioutil.ReadAll(rest.Body)
if err != nil {
fmt.Println(err)
}
_ = ioutil.WriteFile("1.jpg", body, 0755)
//插入到文档里
if err := f.AddPicture(sheet1, "A1", "1.jpg", `{"x_scale": 0.1, "y_scale": 0.1, "x_offset":10, "y_offset":15,"positioning": "oneCell","vertical":"center"}`); err != nil {
fmt.Println(err)
}
//然后在把存的图片删除
err = os.Remove("1.jpg")
if err != nil {
fmt.Println(err)
}
//接口里返回文档
//先导入github.com/360EntSecGroup-Skylar/excelize/v2包
f := excelize.NewFile()
// 创建一个工作表
// 设置单元格的值
f.SetCellValue("Sheet1", "B2", 100)
bufBytes := bytes.NewBuffer(nil)
err = f.Write(bufBytes)
bData := bufBytes.Bytes()
//生成一个(4位随机数加时间戳)随机数的文档名字
now := time.Now().Unix()
ra := fmt.Sprintf("%04v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000))
timeStr := strconv.Itoa(int(now))
path := ra + timeStr
fileName := path + "file.xlsx"
value := "attachment;filename=" + fileName
c.Header("Content-Disposition", value)
c.Data(200, "application/vnd.ms-excel;", bData)
//详细的文档路径
https://xuri.me/excelize/zh-hans/base/installation.html