Об’єднати комірки за допомогою EPPlus?


93

Я використовую бібліотеку EPPlus для читання / запису файлів Excel: http://epplus.codeplex.com/

Я намагаюся просто об'єднати деякі комірки під час написання документа:

using (ExcelPackage pck = new ExcelPackage())
{
    //Create the worksheet
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");

    //Format the header for column 1-3
    using (ExcelRange rng = ws.Cells["A1:C1"])
    {
        bool merge = rng.Merge;
    }
}

Існує властивість Merge, яка просто повертає true або false. Я думав, що це може об’єднати клітини, але це не так.

Хтось знає, як це зробити?

Відповіді:


164

Ви повинні використовувати це так:

ws.Cells["A1:C1"].Merge = true;

замість:

using (ExcelRange rng = ws.Cells["A1:C1"])
{
    bool merge = rng.Merge;
}

Як я можу передати динамічні параметри для злиття комірок у vb.net
— Харі

Чи спрацювало б це, якби я хотів зробити навпаки? Роз’єднати клітини.
— NikosV

Як об’єднати стовпці на основі умови?
— Прашант Пімпале

1
@PrashantPimpale Я не розумію вашого запитання. Майте на увазі, що комірки в діапазоні, який ви хочете об’єднати, повинні бути сусідніми.
— компанія Карлес

2
Просто як додаткова інформація тут. Після злиття зберігатиметься лише саме верхнє ліве значення комірки (решта значень комірки ігноруватиметься)
— цікаво Boy

76

Якщо ви хочете динамічно об’єднати комірки, ви також можете використовувати:

worksheet.Cells[FromRow, FromColumn, ToRow, ToColumn].Merge = true;

Всі ці змінні є цілими числами.


7

Ви можете створити метод розширення:

public static void Merge(this ExcelRangeBase range)
{
    ExcelCellAddress start = range.Start;
    ExcelCellAddress end = range.End;
    range.Worksheet.Cells[start.Row, start.Column, end.Row, end.Column].Merge = true;
}

Ви можете використовувати це, як і через interop:

range.Merge();
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.