图片

插入图片

  1. func (f *File) AddPicture(sheet, cell, picture, format string) error

根据给定的工作表名称、单元格坐标、图片地址和图片格式(例如偏移、缩放和打印设置等),在对应的单元格上插入图片。

例如:

  1. package main
  2. import (
  3. "fmt"
  4. _ "image/gif"
  5. _ "image/jpeg"
  6. _ "image/png"
  7. "github.com/360EntSecGroup-Skylar/excelize"
  8. )
  9. func main() {
  10. xlsx := excelize.NewFile()
  11. // 插入图片
  12. err := xlsx.AddPicture("Sheet1", "A2", "./image1.jpg", "")
  13. if err != nil {
  14. fmt.Println(err)
  15. }
  16. // 插入带有缩放比例和超链接的图片
  17. err = xlsx.AddPicture("Sheet1", "D2", "./image1.png", `{"x_scale": 0.5, "y_scale": 0.5, "hyperlink": "#Sheet2!D8", "hyperlink_type": "Location"}`)
  18. if err != nil {
  19. fmt.Println(err)
  20. }
  21. // 插入图片,并设置图片的外部超链接、打印和位置属性
  22. err = xlsx.AddPicture("Sheet1", "H2", "./image3.gif", `{"x_offset": 15, "y_offset": 10, "hyperlink": "https://github.com/360EntSecGroup-Skylar/excelize", "hyperlink_type": "External", "print_obj": true, "lock_aspect_ratio": false, "locked": false, "positioning": "oneCell"}`)
  23. if err != nil {
  24. fmt.Println(err)
  25. }
  26. err = xlsx.SaveAs("./Book1.xlsx")
  27. if err != nil {
  28. fmt.Println(err)
  29. }
  30. }

链接类型 hyperlink_type 支持外部链接 External 和内部链接 Location 两种类型,当使用 Location 连接到单元格位置时,坐标需要以 # 开始。

位置属性 positioning 支持 oneCell(大小固定,位置随单元格改变)和 absolute (大小、位置均固定)两种类型,当不设置此参数时,默认属性为大小、位置随单元格而改变。

  1. func (f *File) AddPictureFromBytes(sheet, cell, format, name, extension string, file []byte) error

根据给定的工作表名称、单元格坐标、图片地址和图片格式(例如偏移、缩放和打印设置等)、图片描述、图片扩展名和 []byte 类型的图片内容,在对应的单元格上插入图片。

例如:

  1. package main
  2. import (
  3. "fmt"
  4. _ "image/jpeg"
  5. "io/ioutil"
  6. "github.com/360EntSecGroup-Skylar/excelize"
  7. )
  8. func main() {
  9. xlsx := excelize.NewFile()
  10. file, err := ioutil.ReadFile("./image1.jpg")
  11. if err != nil {
  12. fmt.Println(err)
  13. }
  14. err = xlsx.AddPictureFromBytes("Sheet1", "A2", "", "Excel Logo", ".jpg", file)
  15. if err != nil {
  16. fmt.Println(err)
  17. }
  18. err = xlsx.SaveAs("./Book1.xlsx")
  19. if err != nil {
  20. fmt.Println(err)
  21. }
  22. }

获取图片

  1. func (f *File) GetPicture(sheet, cell string) (string, []byte)

根据给定的工作表名称(大小写敏感)和单元格坐标获取工作簿上的图片,将以 []byte 类型返回嵌入在 Excel 文档中的图片。例如,获取名为 Sheet1 的工作表上 A2 单元格上的图片:

  1. xlsx, err := excelize.OpenFile("./Book1.xlsx")
  2. if err != nil {
  3. fmt.Println(err)
  4. return
  5. }
  6. file, raw := xlsx.GetPicture("Sheet1", "A2")
  7. if file == "" {
  8. return
  9. }
  10. err := ioutil.WriteFile(file, raw, 0644)
  11. if err != nil {
  12. fmt.Println(err)
  13. }

原文: https://xuri.me/excelize/zh-hans/image.html