Об’єднати комірки за допомогою 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.