NPOI針對office2003使用HSSFWorkbook,對於offce2007及以上使用XSSFWorkbook;今天我以HSSFWorkbook自定義顏色為例說明,Office2007的未研究呢
在NPOI中默認的顏色類是HSSFColor,它內置的顏色有幾十種供我們選擇,如果不夠怎么辦,不能修改底層的HSSFColor類;
大概解決思路:
1、將顏色的RGB值添加進調色板HSSFPalette中
2、調用HSSFPalette中FindColor方法獲取HSSFColor實例
3、在需要使用顏色的地方使用HSSFColor的Indexed屬性獲取index值(NPOI.dll版本不同,也可能是GetIndex方法節能Index值)
第一步:將顏色的RGB值添加進調色板HSSFPalette
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();//工作簿實例
HSSFPalette palette = hssfWorkbook.GetCustomPalette(); //調色板實例
palette.SetColorAtIndex((short)8 ,(short)184,(short)204,(short)228);
參數解析
第一個參數:設置調色板新增顏色的編號,自已設置即可;取值范圍8-64
第二、第三、第四個參數,組成RGB值
這里還有一點需要注意,如何去找到相應的RGB值呢,如果去用肉眼去找到匹配的太難;
可以下載調色板來拾取,也可以通過Excel固定模板去取,本次我講解通過Excel去取顏色
客戶可能給某個模板,模板中自帶背景色,我們如何找到這個前景色的RGB值呢,通過以下方式
第二步:調用HSSFPalette中FindColor方法獲取HSSFColor實例
HSSFColor hssFColor = palette.FindColor((short)184,(short)204,(short)228);
第一步中自定義設置的RGB值,直接復制過來使用;通過FindColor直接找到HSSFColor實例
第三步:設置具體對象顏色
//創建一個單元格(具體網上查查,本次不做重點講解)
ISheet sheet = hssfWorkbook.GetSheetAt(0);
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
//設置單元格顏色
ICellStyle cellStyle= hssfWorkbook.CreateCellStyle();
cellStyle.FillPattern = FillPattern.SolidForeground; 老版本可能這樣寫FillPatternType.SOLID_FOREGROUND;
cellStyle.FillForegroundColor = hssFColor.Indexed;
cell.CellStyle = cellStyle;//設置