Объединить ячейки с помощью EPPlus?

94

Я использую библиотеку 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. Я думал, может быть, это объединит ячейки, но этого не произошло.

Кто-нибудь знает, как это сделать?

Стивен
источник

Ответы:

166

Вы должны использовать это так:

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

вместо того:

using (ExcelRange rng = ws.Cells["A1:C1"])
{
    bool merge = rng.Merge;
}
Компания Карлес
источник
Как передать динамические параметры для объединения ячеек в vb.net
Хари
Сработало бы это, если бы я хотел сделать наоборот? Разъединить ячейки.
NikosV
Как объединить столбцы по условию?
Prashant Pimpale 08
1
@PrashantPimpale Я не понимаю вашего вопроса. Имейте в виду, что ячейки в диапазоне, который вы хотите объединить, должны быть смежными.
Carles Company
2
Просто как дополнительная информация здесь. После слияния будет сохранено только самое верхнее левое значение ячейки (остальные значения ячеек будут проигнорированы)
curiousBoy
77

Если вы хотите динамически объединять ячейки, вы также можете использовать:

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

Все эти переменные целые.

Mayank
источник
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;
}

Вы можете использовать это так же, как через взаимодействие:

range.Merge();
Пол Кэссиди
источник