2015-06-24 16 views
2

Я пытаюсь установить цвет данной ячейки с цветом другой клетки (что уже окрашенные в шаблоне. Но не кажется worksheet.Cells[row, col].Style.Fill.BackgroundColor иметь get свойства. ли это можно сделать это, или я должен найти точный hexdecimal код цвета в интернете?EPPlus Excel Изменение цвет ячейки

EDIT

с помощью кода в ответ, я получаю эту ошибку (она написана на французском языке, но это переводится с тем, что я написал в своем первом комментарии) enter image description here

ответ

2

Как насчет этого?

//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); 

Update: Кажется, что если вы выбираете цвет из системных цветов или палитры в качестве цвета заливки она отлично работает. Если выбран один из «Тема цветов» в заливке выпадающий .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:

Что НЕ поддерживаемые библиотекой (это наиболее очевидные функции)? [...] * Темы

+0

это не работает, я получаю ошибку «# не является допустимым значением для Int32». И если я удалю его, я получаю все в черном – NicolasR

+0

на строке 'var color = System.Drawing.ColorTranslator.FromHtml (" # "+ rgb); '. Я не знаю, как добавить изображение в комментарий. Я отредактирую свой пост – NicolasR

+0

Это произойдет только в том случае, если вы получите нулевое значение от того, откуда вы получаете цвет из своей «исходной» ячейки, то есть 'ws.Cells [1, 2] .Style.Fill.BackgroundColor. Rgb'. Поэтому, если цвет фона не установлен, произойдет сбой. Убедитесь, что 'ws.Cells [1, 2] .Style.Fill.BackgroundColor.Rgb' имеет значение null до того, как вы запустите остальную часть кода. – BunkerMentality