NPOI 設定文字顏色列表

NPOI 設定文字顏色列表

在用NPOI匯出Excel檔案時,可以設定很多格式..例如邊框、字型、背景色等等..

但因為我的英文不好,所以雖然內建提供了許多顏色的Class可用,但沒辦法一眼挑到想要的顏色

所以乾脆來做一個對照表來看。

首先先用Reflector來看看NPOI.dll裡面的結構如何:

2010-12-20_005801

可以看到NPOI.HSSF.Util.HSSFColor這個類別底下還有一堆類別,

這些類別就是顏色的class,而類別底下的靜態欄位index就是每個顏色的號碼

但如果一個一個試,又太累了,所以這邊利用反射的方法,來匯出顏色的對照表。

	//NPOI詳細的使用方式,就請看官網吧。
            HSSFWorkbook workbook = new HSSFWorkbook();
            MemoryStream ms = new MemoryStream();
            Sheet sheet = workbook.CreateSheet();

            //找到NPOI放置顏色的Type
            Type colorType = typeof(NPOI.HSSF.Util.HSSFColor);

            //找出此Type下公用的class
            var colorInstance = colorType.GetNestedTypes(BindingFlags.Public);

            int count = 0;
            foreach (var item in colorInstance)
            {
                //找出class下的靜態名為index的欄位
                var shortColor = item.GetField("index").GetValue(null);

                Row row = sheet.CreateRow(count);

                //第一種style,設字型的顏色
                CellStyle cellStyleFontColor = workbook.CreateCellStyle();
                Font font1 = workbook.CreateFont();
                font1.Color = (short)shortColor;
                cellStyleFontColor.SetFont(font1);

                //第二種style,設儲存格的前景色
                CellStyle cellStyleBg = workbook.CreateCellStyle();
                cellStyleBg.FillForegroundColor = (short)shortColor;
                cellStyleBg.FillPattern = FillPatternType.SOLID_FOREGROUND;



                row.CreateCell(0).CellStyle = cellStyleBg;

                Cell cell1 = row.CreateCell(1);
                cell1.CellStyle = cellStyleFontColor;
                cell1.SetCellValue("Test顏色");

                row.CreateCell(2).SetCellValue(item.Name);
                row.CreateCell(3).SetCellValue(shortColor.ToString());

                count++;
            }

            workbook.Write(ms);
            var file = File.Open(@"test.xls", FileMode.OpenOrCreate);
            file.Write(ms.ToArray(), 0, (int)ms.Length);
            
            workbook = null;
            ms.Close();
            ms.Dispose();
            file.Close();
            file.Dispose();

執行完匯出來的Excel裡面就會有顏色的一覽表

下載Excel檔

那下面是轉換成html的格式,不過實際還是要看excel比較準囉。

顏色 測試 Class名稱 short
       
  Test顏色 BLACK 8
  Test顏色 BROWN 60
  Test顏色 OLIVE_GREEN 59
  Test顏色 DARK_GREEN 58
  Test顏色 DARK_TEAL 56
  Test顏色 DARK_BLUE 18
  Test顏色 INDIGO 62
  Test顏色 GREY_80_PERCENT 63
  Test顏色 DARK_RED 16
  Test顏色 ORANGE 53
  Test顏色 DARK_YELLOW 19
  Test顏色 GREEN 17
  Test顏色 TEAL 21
  Test顏色 BLUE 12
  Test顏色 BLUE_GREY 54
  Test顏色 GREY_50_PERCENT 23
  Test顏色 RED 10
  Test顏色 LIGHT_ORANGE 52
  Test顏色 LIME 50
  Test顏色 SEA_GREEN 57
  Test顏色 AQUA 49
  Test顏色 LIGHT_BLUE 48
  Test顏色 VIOLET 20
  Test顏色 GREY_40_PERCENT 55
  Test顏色 PINK 14
  Test顏色 GOLD 51
  Test顏色 YELLOW 13
  Test顏色 BRIGHT_GREEN 11
  Test顏色 TURQUOISE 15
  Test顏色 SKY_BLUE 40
  Test顏色 PLUM 61
  Test顏色 GREY_25_PERCENT 22
  Test顏色 ROSE 45
  Test顏色 TAN 47
  Test顏色 LIGHT_YELLOW 43
  Test顏色 LIGHT_GREEN 42
  Test顏色 LIGHT_TURQUOISE 41
  Test顏色 PALE_BLUE 44
  Test顏色 LAVENDER 46
  Test顏色 WHITE 9
  Test顏色 CORNFLOWER_BLUE 24
  Test顏色 LEMON_CHIFFON 26
  Test顏色 MAROON 25
  Test顏色 ORCHID 28
  Test顏色 CORAL 29
  Test顏色 ROYAL_BLUE 30
  Test顏色 LIGHT_CORNFLOWER_BLUE 31
  Test顏色 AUTOMATIC 64