Как насчет этого?
//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:
Что НЕ поддерживаемые библиотекой (это наиболее очевидные функции)? [...] * Темы
это не работает, я получаю ошибку «# не является допустимым значением для Int32». И если я удалю его, я получаю все в черном – NicolasR
на строке 'var color = System.Drawing.ColorTranslator.FromHtml (" # "+ rgb); '. Я не знаю, как добавить изображение в комментарий. Я отредактирую свой пост – NicolasR
Это произойдет только в том случае, если вы получите нулевое значение от того, откуда вы получаете цвет из своей «исходной» ячейки, то есть 'ws.Cells [1, 2] .Style.Fill.BackgroundColor. Rgb'. Поэтому, если цвет фона не установлен, произойдет сбой. Убедитесь, что 'ws.Cells [1, 2] .Style.Fill.BackgroundColor.Rgb' имеет значение null до того, как вы запустите остальную часть кода. – BunkerMentality