FlexSheet for WPF | ComponentOne
Customizing Appearance / Customizing Cells / Cell Formatting / Merge Cells
In This Topic
    Merge Cells
    In This Topic

    FlexSheet for WPF allows you to merge cells in a situation where you need to combine the data in multiple cells into a single cell. For example, you want to create a project timeline worksheet where you can track your project deadlines and status, and want to give it a title heading as well. To create a title heading, you need to combine multiple cells into one, which can be achieved by merging cells.

    Merging in C1FlexSheet can be performed using ExcelMergeManager class. The code given below is used to merge cells in C1FlexSheet. In our case, we have implemented this code on the click event of a button.

    ' get current selection, ensure there's more than one cell in it
    Dim sel = flex.Selection
    Dim xmm = TryCast(flex.MergeManager, ExcelMergeManager)
    If xmm IsNot Nothing Then
        ' check if the selection contains any merged ranges
        Dim hasMerges = False
        For Each cell As CellRange In sel.Cells
            If Not xmm.GetMergedRange(flex, CellType.Cell, cell).IsSingleCell Then
                hasMerges = True
            End If
        Next
        ' toggle merging for the selection
        If hasMerges Then
            ' clear merged ranges
            xmm.RemoveRange(sel)
        Else
            ' merge selection
            xmm.AddRange(sel)
        End If
        ' show changes
        flex.Invalidate()
    End If
    
    // get current selection, ensure there's more than one cell in it
    var sel = flex.Selection;
    var xmm = flex.MergeManager as ExcelMergeManager;
    if (xmm != null)
    {
        // check if the selection contains any merged ranges
        var hasMerges = false;
        foreach (var cell in sel.Cells)
        {
            if (!xmm.GetMergedRange(flex, CellType.Cell, cell).IsSingleCell)
            {
                hasMerges = true;
            }
        }
        // toggle merging for the selection
        if (hasMerges)
        {
            // clear merged ranges
            xmm.RemoveRange(sel);
        }
        else
        {
            // merge selection
            xmm.AddRange(sel);
        }
        // show changes
        flex.Invalidate();
    }