EPPlus: как стилизовать объединенные ячейки?

Изменить: все эти примеры должны работать. Моя проблема на самом деле не была связана с epplus, и этот код, а также отмеченный ответ работают для стилизации объединенных ячеек.

Я хотел бы иметь возможность стилизовать объединенную ячейку, однако мои попытки стилизовать ее не имеют никакого эффекта. Вот как я объединяю ячейки:

WorkSheet.Cells["A1:K1"].Merge = true;

Вот как я попытался установить цвет фона и шрифта в этой объединенной ячейке:

WorkSheet.Cells["A1:K1"].Style.Fill.PatternType = ExcelFillStyle.Solid;
WorkSheet.Cells["A1:K1"].Style.Fill.BackgroundColor.SetColor(Color.Black);
WorkSheet.Cells["A1:K1"].Style.Font.Color.SetColor(Color.Red);

Другой способ, который я пробовал:

WorkSheet.Cells["A1"].Style.Fill.PatternType = ExcelFillStyle.Solid;
WorkSheet.Cells["A1"].Style.Fill.BackgroundColor.SetColor(Color.Black);
WorkSheet.Cells["A1"].Style.Font.Color.SetColor(Color.Red);

Еще один способ, который я пробовал:

WorkSheet.Cells[1, 1].Style.Fill.PatternType = ExcelFillStyle.Solid;
WorkSheet.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(Color.Black);
WorkSheet.Cells[1, 1].Style.Font.Color.SetColor(Color.Red);

Что мне здесь не хватает? Я могу без труда стилизовать другие ячейки, которые не были объединены, но мои объединенные ячейки не изменятся.


person Jakotheshadows    schedule 12.12.2013    source источник
comment
Только что попробовал перебрать каждую объединенную ячейку и стилизовать ее, а также попробовал WorkSheet.Cells[1, 1, 1, 11]... безуспешно.   -  person Jakotheshadows    schedule 12.12.2013


Ответы (1)


Я не могу воспроизвести проблему. Вот пример стилизации объединенных ячеек. Посмотрим, сможешь ли ты найти, что ты сделал не так. Все, что вам нужно сделать, это запустить его.

Пожалуйста, дайте мне знать, если у вас есть какие-либо сомнения.

    var stream = new MemoryStream();

// print header
using (var package = new ExcelPackage(stream))
{
    // add a new worksheet to the empty workbook
    var worksheet = package.Workbook.Worksheets.Add("testsheet");
    for(var i = 0; i < 10; i++)
        worksheet.Cells[i + 1, 1].Value = i.ToString();

    worksheet.Cells["A1:A3"].Merge = true;
    worksheet.Cells["A1:A3"].Style.VerticalAlignment = ExcelVerticalAlignment.Top;
    worksheet.Cells["A1:A3"].Style.Border.Top.Style = ExcelBorderStyle.Thin;
    worksheet.Cells["A1:A3"].Style.Border.Left.Style = ExcelBorderStyle.Thin;
    worksheet.Cells["A1:A3"].Style.Border.Right.Style = ExcelBorderStyle.Thin;
    worksheet.Cells["A1:A3"].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
    worksheet.Cells["A1:A3"].Style.Fill.PatternType = ExcelFillStyle.Solid;
    worksheet.Cells["A1:A3"].Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml("#f0f3f5"));

     package.Save();
}

stream.Seek(0, SeekOrigin.Begin);

using (Stream file = File.Open("sample.xlsx", FileMode.Create))
{
    var buffer = new byte[8 * 1024];
    int len;
    while ((len = stream.Read(buffer, 0, buffer.Length)) > 0)
        file.Write(buffer, 0, len);
}
person André Pena    schedule 12.12.2013
comment
Спасибо. Мой пример тоже работает, код, который я показал, просто не выполнялся из-за несвязанной проблемы. Я ошибочно предположил, что неправильно использую EPPlus. - person Jakotheshadows; 12.12.2013