首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据给定的fgColor索引计算颜色

如何根据给定的fgColor索引计算颜色
EN

Stack Overflow用户
提问于 2011-07-14 12:31:55
回答 2查看 1.4K关注 0票数 1

我正在研究Open XML,

代码语言:javascript
运行
复制
<x:fill>
    <x:patternFill patternType="solid">
      <x:fgColor indexed="46" />
      <x:bgColor indexed="64" />
    </x:patternFill>
  </x:fill>

上面是从office 2003转换而来的office 2007文档。根据仅用于向后兼容性目的的http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.foregroundcolor.aspx索引属性。

上面是我的代码,如何计算索引= 46的#十六进制颜色代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-01 11:02:46

解决了我的问题,有颜色索引在线。搜索一下就行了。

票数 0
EN

Stack Overflow用户

发布于 2016-10-12 20:18:41

我为自己做了这门课。希望我能为某人省去一些麻烦

代码语言:javascript
运行
复制
public class IndexedColours
    {
        static Dictionary<string, string> Data;
        IndexedColours()
        {
            if(Data == null || Data.Count == 0)
            {
                Data = new Dictionary<string, string>();
                Data.Add("0", "000000");
                Data.Add("1", "FFFFFF");
                Data.Add("2", "FF0000");
                Data.Add("3", "00FF00");
                Data.Add("4", "0000FF");
                Data.Add("5", "FFFF00");
                Data.Add("6", "FF00FF");
                Data.Add("7", "00FFFF");
                Data.Add("8", "000000");
                Data.Add("9", "FFFFFF");
                Data.Add("10", "FF0000");
                Data.Add("11", "00FF00");
                Data.Add("12", "0000FF");
                Data.Add("13", "FFFF00");
                Data.Add("14", "FF00FF");
                Data.Add("15", "00FFFF");
                Data.Add("16", "800000");
                Data.Add("17", "008000");
                Data.Add("18", "000080");
                Data.Add("19", "808000");
                Data.Add("20", "800080");
                Data.Add("21", "008080");
                Data.Add("22", "C0C0C0");
                Data.Add("23", "808080");
                Data.Add("24", "9999FF");
                Data.Add("25", "993366");
                Data.Add("26", "FFFFCC");
                Data.Add("27", "CCFFFF");
                Data.Add("28", "660066");
                Data.Add("29", "FF8080");
                Data.Add("30", "0066CC");
                Data.Add("31", "CCCCFF");
                Data.Add("32", "000080");
                Data.Add("33", "FF00FF");
                Data.Add("34", "FFFF00");
                Data.Add("35", "00FFFF");
                Data.Add("36", "800080");
                Data.Add("37", "800000");
                Data.Add("38", "008080");
                Data.Add("39", "0000FF");
                Data.Add("40", "00CCFF");
                Data.Add("41", "CCFFFF");
                Data.Add("42", "CCFFCC");
                Data.Add("43", "FFFF99");
                Data.Add("44", "99CCFF");
                Data.Add("45", "FF99CC");
                Data.Add("46", "CC99FF");
                Data.Add("47", "FFCC99");
                Data.Add("48", "3366FF");
                Data.Add("49", "33CCCC");
                Data.Add("50", "99CC00");
                Data.Add("51", "FFCC00");
                Data.Add("52", "FF9900");
                Data.Add("53", "FF6600");
                Data.Add("54", "666699");
                Data.Add("55", "969696");
                Data.Add("56", "003366");
                Data.Add("57", "339966");
                Data.Add("58", "003300");
                Data.Add("59", "333300");
                Data.Add("60", "993300");
                Data.Add("61", "993366");
                Data.Add("62", "333399");
                Data.Add("63", "333333");
            }
        }

        public static string GetIndexColour(string Index)
        {
            var d = new IndexedColours();
            var res = "";
            var exist = Data.TryGetValue(Index, out res);
            if (exist)
                return res;
            else return "000000";
        }
    }

方法来使用上面的代码:

代码语言:javascript
运行
复制
public static string GetCellColour(this Cell cell, SpreadsheetDocument d)
        {
            if (cell != null && cell.StyleIndex != null)
            {
                var valcell = cell;

                var styles = d.WorkbookPart.WorkbookStylesPart;
                var ss = styles.Stylesheet;
                var formats = ss.CellFormats;

                var cf = (CellFormat)formats.ElementAt((int)valcell.StyleIndex.Value);
                var fill = (Fill)styles.Stylesheet.Fills.ChildElements[(int)cf.FillId.Value];
                var fgc = fill.PatternFill.ForegroundColor;
                var cl = fgc == null || fgc.Rgb == null ? "FFFFFF" : fgc.Rgb.Value.Remove(0, 2);
                if (fgc != null && fgc.Indexed != null && fgc.Indexed.HasValue)
                {
                    cl = IndexedColours.GetIndexColour(fgc.Indexed.Value.ToString());
                }
                return cl;
            }
            else return "FFFFFF";
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6688507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档