图片

插入图片

  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/v2"
  8. )
  9. func main(){
  10. f := excelize.NewFile()
  11. // 插入图片
  12. if err := f.AddPicture("Sheet1","A2","image.jpg",""); err !=nil{
  13. fmt.Println(err)
  14. }
  15. // 插入带有缩放比例和超链接的图片
  16. if err := f.AddPicture("Sheet1","D2","image.png",`{
  17. "x_scale": 0.5,
  18. "y_scale": 0.5,
  19. "hyperlink": "#Sheet2!D8",
  20. "hyperlink_type": "Location"
  21. }`); err !=nil{
  22. fmt.Println(err)
  23. }
  24. // 插入图片,并设置图片的外部超链接、打印和位置属性
  25. if err := f.AddPicture("Sheet1","H2","image.gif",`{
  26. "x_offset": 15,
  27. "y_offset": 10,
  28. "hyperlink": "https://github.com/360EntSecGroup-Skylar/excelize",
  29. "hyperlink_type": "External",
  30. "print_obj": true,
  31. "lock_aspect_ratio": false,
  32. "locked": false,
  33. "positioning": "oneCell"
  34. }`); err !=nil{
  35. fmt.Println(err)
  36. }
  37. if err := f.SaveAs("Book1.xlsx"); err !=nil{
  38. fmt.Println(err)
  39. }
  40. }

链接类型 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. _ "image/jpeg"
  4. "io/ioutil"
  5. "github.com/360EntSecGroup-Skylar/excelize/v2"
  6. )
  7. func main(){
  8. f := excelize.NewFile()
  9. file, err := ioutil.ReadFile("image.jpg")
  10. if err !=nil{
  11. fmt.Println(err)
  12. }
  13. if err := f.AddPictureFromBytes("Sheet1","A2","","Excel Logo",".jpg", file); err !=nil{
  14. fmt.Println(err)
  15. }
  16. if err := f.SaveAs("Book1.xlsx"); err !=nil{
  17. fmt.Println(err)
  18. }
  19. }

获取图片

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

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

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

删除图片

  1. func (f *File)DeletePicture(sheet, cell string)(err error)

根据给定的工作表名称和单元格坐标,删除对应单元格上的图片。