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)