Mesclar células usando EPPlus?

93

Estou usando a biblioteca EPPlus para ler / gravar arquivos Excel: http://epplus.codeplex.com/

Estou tentando simplesmente mesclar algumas células ao escrever um documento:

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;
    }
}

Existe uma propriedade chamada Merge que simplesmente retorna verdadeiro ou falso. Eu pensei que talvez fosse mesclar as células, mas não faz.

Alguém sabe como fazer isto?

Steven
fonte

Respostas:

164

Você tem que usá-lo assim:

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

ao invés de:

using (ExcelRange rng = ws.Cells["A1:C1"])
{
    bool merge = rng.Merge;
}
Carles Company
fonte
Como posso passar os parâmetros dinâmicos para mesclar as células em vb.net
Hari
Isso funcionaria se eu quisesse fazer o oposto? Desfaça a mesclagem de células.
NikosV
Como faço para mesclar colunas com base na condição?
Prashant Pimpale
1
@PrashantPimpale Não entendi sua pergunta. Lembre-se de que as células no intervalo que você deseja mesclar precisam ser adjacentes.
Carles Company
2
Apenas como uma informação adicional aqui. Somente o valor da célula superior esquerdo será mantido após a mesclagem (o restante dos valores da célula serão ignorados)
curiousBoy
76

Se você deseja mesclar células dinamicamente, também pode usar:

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

Todas essas variáveis ​​são inteiras.

Mayank
fonte
7

Você pode criar um método de extensão:

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;
}

Você pode usar isso como faria pela interoperabilidade:

range.Merge();
Paul Cassidy
fonte