NPOI Excel 单元格背景颜色对照表

本文介绍如何使用 NPOI 库为 Excel 单元格设置背景颜色,并提供了一个详细的颜色对照表,便于开发者选择合适的颜色进行样式设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

POI Excel 单元格背景颜色设置方法以及颜色对照表:

复制

1
2
3
4
5
6
ICellStyle style = workbook.CreateCellStyle();
style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;
style.FillPattern = FillPattern.SolidForeground;
 
ICell cell = workbook.CreateSheet().CreateRow(0).CreateCell(0);
cell.CellStyle = style;

颜色对照表:

颜色测试Class名称short
    
 Test颜色Black8
 Test颜色Brown60
 Test颜色Olive_Green59
 Test颜色Dark_Green58
 Test颜色Dark_Teal56
 Test颜色Dark_Blue18
 Test颜色Indigo62
 Test颜色Grey_80_PERCENT63
 Test颜色Dark_Red16
 Test颜色Orange53
 Test颜色DARK_YELLOW19
 Test颜色Green17
 Test颜色Teal21
 Test颜色Blue12
 Test颜色Blue_Grey54
 Test颜色Grey_50_PERCENT23
 Test颜色Red10
 Test颜色LIGHT_ORANGE52
 Test颜色LIME50
 Test颜色SEA_GREEN57
 Test颜色AQUA49
 Test颜色LIGHT_BLUE48
 Test颜色VIOLET20
 Test颜色GREY_40_PERCENT55
 Test颜色Pink14
 Test颜色Gold51
 Test颜色Yellow13
 Test颜色BRIGHT_GREEN11
 Test颜色TURQUOISE15
 Test颜色SKY_BLUE40
 Test颜色Plum61
 Test颜色GREY_25_PERCENT22
 Test颜色Rose45
 Test颜色Tan47
 Test颜色LIGHT_YELLOW43
 Test颜色LIGHT_GREEN42
 Test颜色LIGHT_TURQUOISE41
 Test颜色PALE_BLUE44
 Test颜色LAVENDER46
 Test颜色White9
 Test颜色CORNFLOWER_BLUE24
 Test颜色LEMON_CHIFFON26
 Test颜色MAROON25
 Test颜色ORCHID28
 Test颜色CORAL29
 Test颜色ROYAL_BLUE30
 Test颜色LIGHT_CORNFLOWER_BLUE31
 Test颜色AUTOMATIC64

转载于:https://www.cnblogs.com/byxxw/p/5265127.html

<think>我们已知用户希望获取使用C#和NPOI获取Excel单元格背景颜色的方法。根据引用内容,我们需要注意以下几点:1.对于.xls(HSSF)和.xlsx(XSSF)两种格式,获取颜色的方式有所不同。2.引用[1]提到:对于xlsx格式,使用XSSFColor,可以直接获取RGB值;对于xls格式,使用HSSFColor,也可以获取RGB值,但方式不同。3.引用[3]提到:设置颜色时,对于xls可以直接使用索引颜色,而对于xlsx还可以通过SetRgb方法设置自定义颜色。因此,在获取背景颜色时,我们需要区分工作簿类型。同时,背景颜色存储在单元格样式的FillForegroundColorColor属性中。步骤:1.获取单元格的样式(CellStyle)。2.从样式中获取FillForegroundColorColor属性,该属性是一个IColor对象。3.判断工作簿类型(HSSFWorkbook对应.xls,XSSFWorkbook对应.xlsx)。4.根据类型将IColor转换为具体的颜色类(HSSFColor或XSSFColor)并获取RGB值。注意:可能单元格没有设置背景色,那么FillForegroundColorColor可能为null,或者颜色为自动(Automatic),需要处理这种情况。代码示例:假设我们已经有一个单元格对象cell,我们可以这样获取其背景色的RGB值(以字节数组形式):</think>在 C# 中使用 NPOI 获取 Excel 单元格背景颜色的方法需要区分 `.xls` 和 `.xlsx` 格式,以下是完整解决方案: ### 获取单元格背景颜色的方法 ```csharp using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; public static byte[] GetCellBackgroundColor(ICell cell) { if (cell?.CellStyle == null) return null; // 无样式或空单元格 var foregroundColor = cell.CellStyle.FillForegroundColorColor; if (foregroundColor == null) return null; // 无背景色设置 // 根据工作簿类型处理 switch (cell.Sheet.Workbook) { case HSSFWorkbook _: // .xls 格式 if (foregroundColor is HSSFColor hssfColor) return hssfColor.RGB; break; case XSSFWorkbook _: // .xlsx 格式 if (foregroundColor is XSSFColor xssfColor) return xssfColor.RGB; break; } return null; // 未知格式或颜色类型 } ``` ### 使用示例 ```csharp // 读取工作簿 using (var fs = new FileStream("file.xlsx", FileMode.Open)) { IWorkbook workbook = new XSSFWorkbook(fs); // 对.xls使用HSSFWorkbook ISheet sheet = workbook.GetSheetAt(0); // 获取A1单元格背景色 ICell cell = sheet.GetRow(0).GetCell(0); byte[] rgb = GetCellBackgroundColor(cell); if (rgb != null) { Console.WriteLine($"RGB值: R={rgb[0]}, G={rgb[1]}, B={rgb[2]}"); } else { Console.WriteLine("无背景色设置"); } } ``` ### 关键点说明: 1. **格式区分**: - `.xls` 使用 `HSSFColor` 获取 RGB 值[^1] - `.xlsx` 使用 `XSSFColor` 获取 RGB 值[^1][^3] 2. **颜色处理**: - 使用 `FillForegroundColorColor` 属性获取颜色对象 - 检查 `null` 表示无背景色 - RGB 值是包含 R/G/B 三个分量的字节数组 3. **特殊值处理**: - 自动颜色 (`Automatic`) 返回 `null` - 未设置背景色的单元格返回 `null` - 索引颜色会自动转换为 RGB 值 ### 实际应用场景 ```csharp // 检查单元格是否有背景色 bool HasBackgroundColor(ICell cell) { return GetCellBackgroundColor(cell) != null; } // 复制背景色到另一单元格 void CopyBackgroundColor(ICell source, ICell target) { byte[] rgb = GetCellBackgroundColor(source); if (rgb == null) return; var newStyle = target.Sheet.Workbook.CreateCellStyle(); newStyle.CloneStyleFrom(target.CellStyle); // 设置新背景色 if (target.Sheet.Workbook is XSSFWorkbook) { newStyle.FillForegroundColor = 0; ((XSSFColor)newStyle.FillForegroundColorColor).SetRgb(rgb); } else { // 对于.xls需要自定义调色板 var palette = ((HSSFWorkbook)target.Sheet.Workbook).GetCustomPalette(); var colorIndex = palette.FindSimilarColor(rgb[0], rgb[1], rgb[2]); newStyle.FillForegroundColor = colorIndex.Indexed; } newStyle.FillPattern = FillPattern.SolidForeground; target.CellStyle = newStyle; } ``` ### 注意事项: 1. 对于 `.xls` 格式,自定义颜色需要操作调色板[^3] 2. 索引颜色会自动转换为 RGB,但可能不完全匹配原色 3. 使用前需检查 `cell.CellStyle` 是否为 `null` 4. 合并单元格需先获取实际存储样式的单元格[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值