EPPlus Excel更改单元格颜色

时间:2015-06-24 11:34:54

标签: c# epplus

我正在尝试使用另一个单元格的颜色(已在模板中着色)设置给定单元格的颜色。 但worksheet.Cells[row, col].Style.Fill.BackgroundColor似乎没有get属性。 是可以这样做还是我必须在互联网上找到颜色的确切十六进制代码?

修改

使用答案中的代码,我得到了这个错误(它是用法语写的,但它用我在第一条评论中写的内容翻译) enter image description here

2 个答案:

答案 0 :(得分:4)

这样的事情怎么样?

//get color from this cell
var rgb = ws.Cells[1, 2].Style.Fill.BackgroundColor.Rgb;
//Convert to system.drawing.color
var color = System.Drawing.ColorTranslator.FromHtml("#" + rgb);
//set color in this cell
ws.Cells[1, 1].Style.Fill.PatternType = ExcelFillStyle.Solid;
ws.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(color);

更新: 似乎如果您从系统颜色或调色板中选择颜色作为填充颜色,它可以正常工作。如果您在填充下拉列表中选择了一个“主题颜色”.Rgb,则返回一个空字符串

//get style
var style = ws.Cells[400, 1].Style;

//If color from System colors or palette
if (!string.IsNullOrEmpty(style.Fill.BackgroundColor.Rgb))
{
   //Convert to system.drawing.colow
   var color = System.Drawing.ColorTranslator.FromHtml("#" + style.Fill.BackgroundColor.Rgb);
   //set color in this cell
   ws.Cells[1, 1].Style.Fill.PatternType = ExcelFillStyle.Solid;
   ws.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(color);
}
else if (!string.IsNullOrEmpty(style.Fill.BackgroundColor.Theme))
{
   //No idea how to get color from Theme
}

我不确定它是否受到支持......根据EPPlus Faqs

  

库不支持什么(这些是最明显的功能)?   [...]   *主题

答案 1 :(得分:0)

对于任何来到这里的人,由于我在EPPlus上玩得很开心,并且对上述答案不满意:

cell.Style.Fill.BackgroundColor.LookupColor()

返回#AARRGGBB颜色(即红色为#FFFF0000)。您感兴趣的部分可能是最后6位数字。