Fusionner les cellules à l'aide d'EPPlus?

93

J'utilise la bibliothèque EPPlus pour lire / écrire des fichiers Excel: http://epplus.codeplex.com/

J'essaie simplement de fusionner certaines cellules lors de la rédaction d'un document:

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

Il existe une propriété nommée Merge qui renvoie simplement vrai ou faux. J'ai pensé que peut-être que cela fusionnerait les cellules, mais ce n'est pas le cas.

Quelqu'un sait-il comment faire ça?

Steven
la source

Réponses:

164

Vous devez l'utiliser comme ceci:

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

au lieu de:

using (ExcelRange rng = ws.Cells["A1:C1"])
{
    bool merge = rng.Merge;
}
Compagnie Carles
la source
Comment puis-je passer les paramètres dynamiques pour fusionner les cellules dans vb.net
Hari
Cela fonctionnerait-il si je voulais faire le contraire? Annuler la fusion des cellules.
NikosV le
Comment fusionner des colonnes sur la base d'une condition?
Prashant Pimpale
1
@PrashantPimpale Je ne comprends pas votre question. N'oubliez pas que les cellules de la plage que vous souhaitez fusionner doivent être adjacentes.
Carles Company
2
Juste comme une information supplémentaire ici. Seule la valeur de cellule la plus en haut à gauche sera conservée après la fusion (le reste des valeurs de cellule sera ignoré)
curiousBoy
76

Si vous souhaitez fusionner des cellules de manière dynamique, vous pouvez également utiliser:

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

Toutes ces variables sont des nombres entiers.

mayank
la source
7

Vous pouvez créer une méthode d'extension:

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

Vous pouvez l'utiliser comme vous le feriez via l'interopérabilité:

range.Merge();
Paul Cassidy
la source