色值计算

  1. func ThemeColor(baseColor string, tint float64) string

通过给定的 RGB 格式色值与色调参数,计算出最终颜色。例如,获取名为 Sheet1 的工作表 A1 单元格的背景颜色:

  1. package main
  2. import (
  3. "fmt"
  4. "strings"
  5. "github.com/360EntSecGroup-Skylar/excelize"
  6. )
  7. func main() {
  8. f, err := excelize.OpenFile("Book1.xlsx")
  9. if err != nil {
  10. fmt.Println(err)
  11. return
  12. }
  13. fmt.Println(getCellBgColor(f, "Sheet1", "A1"))
  14. }
  15. func getCellBgColor(f *excelize.File, sheet, axix string) string {
  16. styleID, err := f.GetCellStyle(sheet, axix)
  17. if err != nil {
  18. return err.Error()
  19. }
  20. fillID := *f.Styles.CellXfs.Xf[styleID].FillID
  21. fgColor := f.Styles.Fills.Fill[fillID].PatternFill.FgColor
  22. if fgColor.Theme != nil {
  23. children := f.Theme.ThemeElements.ClrScheme.Children
  24. if *fgColor.Theme < 4 {
  25. dklt := map[int]string{
  26. 0: children[1].SysClr.LastClr,
  27. 1: children[0].SysClr.LastClr,
  28. 2: *children[3].SrgbClr.Val,
  29. 3: *children[2].SrgbClr.Val,
  30. }
  31. return strings.TrimPrefix(
  32. excelize.ThemeColor(dklt[*fgColor.Theme], fgColor.Tint), "FF")
  33. }
  34. srgbClr := *children[*fgColor.Theme].SrgbClr.Val
  35. return strings.TrimPrefix(excelize.ThemeColor(srgbClr, fgColor.Tint), "FF")
  36. }
  37. return strings.TrimPrefix(fgColor.RGB, "FF")
  38. }