NPOI 設定文字顏色列表
在用NPOI匯出Excel檔案時,可以設定很多格式..例如邊框、字型、背景色等等..
但因為我的英文不好,所以雖然內建提供了許多顏色的Class可用,但沒辦法一眼挑到想要的顏色
所以乾脆來做一個對照表來看。
首先先用Reflector來看看NPOI.dll裡面的結構如何:
可以看到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裡面就會有顏色的一覽表
那下面是轉換成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 |