我正在尝试使用另一个单元格的颜色(已在模板中着色)设置给定单元格的颜色。
但worksheet.Cells[row, col].Style.Fill.BackgroundColor
似乎没有get
属性。
是可以这样做还是我必须在互联网上找到颜色的确切十六进制代码?
修改
使用答案中的代码,我得到了这个错误(它是用法语写的,但它用我在第一条评论中写的内容翻译)
答案 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位数字。