¿Combinar celdas usando EPPlus?

93

Estoy usando la biblioteca EPPlus para leer / escribir archivos de Excel: http://epplus.codeplex.com/

Estoy tratando de simplemente fusionar algunas celdas al escribir un 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;
    }
}

Hay una propiedad llamada Merge que simplemente devuelve verdadero o falso. Pensé que tal vez eso fusionaría las celdas, pero no es así.

Alguien sabe cómo hacer esto?

Steven
fuente

Respuestas:

164

Tienes que usarlo así:

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

en vez de:

using (ExcelRange rng = ws.Cells["A1:C1"])
{
    bool merge = rng.Merge;
}
Compañía Carles
fuente
¿Cómo puedo pasar los parámetros dinámicos para fusionar las celdas en vb.net?
Hari
¿Funcionaría esto si quisiera hacer lo contrario? Separar celdas.
NikosV
¿Cómo fusiono columnas en función de la condición?
Prashant Pimpale
1
@PrashantPimpale No entiendo tu pregunta. Tenga en cuenta que las celdas del rango que desea fusionar deben ser adyacentes.
Carles Company
2
Solo como información adicional aquí. Sólo el valor de la celda superior izquierda más se mantendrá después de combinación (se ignorará el resto de los valores de las celdas)
curiousBoy
76

Si desea fusionar celdas dinámicamente, también puede usar:

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

Todas estas variables son números enteros.

mayank
fuente
7

Puede crear un método de extensión:

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

Puede usar esto como lo haría a través de la interoperabilidad:

range.Merge();
Paul Cassidy
fuente