¿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?

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

¿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.


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();
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.