go-excelize获取一些单元格背景色不正确的问题
【摘要】 excelize地址:https://github.com/360EntSecGroup-Skylar/excelize获取单元格背景色:func getCellBgColor(xlsx *excelize.File, sheet, axix string) string { styleID,err := xlsx.GetCellStyle(sheet, axix) if err !...
excelize地址:
https://github.com/360EntSecGroup-Skylar/excelize
获取单元格背景色:
func getCellBgColor(xlsx *excelize.File, sheet, axix string) string { styleID,err := xlsx.GetCellStyle(sheet, axix) if err != nil { println(err.Error()) return "000" } fillID := xlsx.Styles.CellXfs.Xf[styleID].FillID fgColor := xlsx.Styles.Fills.Fill[fillID].PatternFill.FgColor if fgColor.Theme != nil { srgbClr := xlsx.Theme.ThemeElements.ClrScheme.Children[*fgColor.Theme].SrgbClr.Val return excelize.ThemeColor(*srgbClr, fgColor.Tint) } return fgColor.RGB }
上面的函数获取系统色的时候会返回空串,而可以获取到fgColor.Indexed,所以可以添加补充为
var COLOR_INDEX = []string{ "FF000000", "FFFFFFFF", "FFFF0000", "FF00FF00", "FF0000FF", "FFFFFF00", "FFFF00FF", "FF00FFFF", "FF000000", "FFFFFFFF", "FFFF0000", "FF00FF00", "FF0000FF", "FFFFFF00", "FFFF00FF", "FF00FFFF", "FF800000", "FF008000", "FF000080", "FF808000", "FF800080", "FF008080", "FFC0C0C0", "FF808080", "FF9999FF", "FF993366", "FFFFFFCC", "FFCCFFFF", "FF660066", "FFFF8080", "FF0066CC", "FFCCCCFF", "FF000080", "FFFF00FF", "FFFFFF00", "FF00FFFF", "FF800080", "FF800000", "FF008080", "FF0000FF", "FF00CCFF", "FFCCFFFF", "FFCCFFCC", "FFFFFF99", "FF99CCFF", "FFFF99CC", "FFCC99FF", "FFFFCC99", "FF3366FF", "FF33CCCC", "FF99CC00", "FFFFCC00", "FFFF9900", "FFFF6600", "FF666699", "FF969696", "FF003366", "FF339966", "FF003300", "FF333300", "FF993300", "FF993366", "FF333399", "FF333333", "System Foreground", "System Background", } func getCellBgColor(xlsx *excelize.File, sheet, axix string) string { styleID,err := xlsx.GetCellStyle(sheet, axix) if err != nil { println(err.Error()) return "000" } fillID := xlsx.Styles.CellXfs.Xf[styleID].FillID fgColor := xlsx.Styles.Fills.Fill[fillID].PatternFill.FgColor if fgColor.Theme != nil { srgbClr := xlsx.Theme.ThemeElements.ClrScheme.Children[*fgColor.Theme].SrgbClr.Val return excelize.ThemeColor(*srgbClr, fgColor.Tint) } if(fgColor.RGB==""){ return COLOR_INDEX[fgColor.Indexed] } return fgColor.RGB }
参考:
https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/colors.html
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)