Syncfusion AI Assistant

How can I help you?

Ribbon Customization in Blazor Spreadsheet Component

27 May 202624 minutes to read

The Blazor Spreadsheet component provides a comprehensive ribbon interface that can be customized to match your application’s needs. You can control the visibility, state, and layout of ribbon elements including tabs, groups, and items. Additionally, you can add custom tabs, groups, and items to extend the ribbon with your own functionality.

Overview

The Spreadsheet ribbon component is organized hierarchically, with tabs at the top level, groups as related containers within tabs, and items as individual controls within groups. Ribbon customization can be performed either declaratively using property binding or dynamically using methods, based on your application requirements.

Customizing the Ribbon Using Property Binding

Property binding enables declarative customization of the ribbon during component initialization, making it ideal for defining static configurations in advance.

Customizing Built-in Ribbon Tabs

Built-in tabs can be customized using the RibbonTabItems property. Tabs can be hidden, reordered, and their display text changed.

Property Type Description
TabId string The unique identifier of the ribbon tab (e.g., “homeTab”, “insertTab”)
IsVisible bool Controls whether the tab is visible in the ribbon. Default is true
Order int? Sets the tab’s display order. Lower values appear first. Default is null
HeaderText string Overrides the tab’s display label.
@page "/"
@using Syncfusion.Blazor.Spreadsheet

<SfSpreadsheet>
    <SpreadsheetRibbon RibbonTabItems="@GetTabCustomizations()"></SpreadsheetRibbon>
</SfSpreadsheet>

@code {

    private List<SpreadsheetRibbonTab> GetTabCustomizations()
    {
        return new List<SpreadsheetRibbonTab>
        {
            // Hide the Review tab
            new SpreadsheetRibbonTab { TabId = "reviewTab", IsVisible = false },
            
            // Reorder View tab to appear after Home
            new SpreadsheetRibbonTab { TabId = "viewTab", Order = 1 },
            
            // Rename the Insert tab
            new SpreadsheetRibbonTab { TabId = "insertTab", HeaderText = "Add Objects" }
        };
    }
}

Customizing Built-in Ribbon Groups

Built-in groups within tabs can be customized using the RibbonGroupItems property. Groups can be hidden and reordered within their parent tab.

Property Type Description
GroupId string The unique identifier of the ribbon group (e.g., “clipboardGroup”, “fontStyleGroup”)
TabId string The ID of the parent tab containing this group
IsVisible bool Controls whether the group is visible. Default is true
Order int? Sets the group’s display order within its tab. Lower values appear first. Default is null
@page "/"
@using Syncfusion.Blazor.Spreadsheet

<SfSpreadsheet>
    <SpreadsheetRibbon RibbonGroupItems="@GetGroupCustomizations()"></SpreadsheetRibbon>
</SfSpreadsheet>

@code {

    private List<SpreadsheetRibbonGroup> GetGroupCustomizations()
    {
        return new List<SpreadsheetRibbonGroup>
        {
            // Hide the Borders group in Home tab
            new SpreadsheetRibbonGroup { GroupId = "bordersGroup", TabId = "homeTab", IsVisible = false },
            
            // Move Font Alignment group to appear first in Home tab
            new SpreadsheetRibbonGroup { GroupId = "fontAlignmentGroup", TabId = "homeTab", Order = 0 }
        };
    }
}

Customizing Built-in Ribbon Items

Individual ribbon items can be customized using the RibbonItems property. Items can be hidden, disabled, and reordered within their group.

Property Type Description
ItemId string The unique identifier of the ribbon item (e.g., “bold”, “italic”).
GroupId string The ID of the parent group containing this item
IsVisible bool Controls whether the item is visible. Default is true
IsEnabled bool? Controls whether the item is enabled. Default is null
Order int? Sets the item’s display order within its group. Lower values appear first. Default is null
@page "/"
@using Syncfusion.Blazor.Spreadsheet

<SfSpreadsheet>
    <SpreadsheetRibbon RibbonItems="@GetItemCustomizations()"></SpreadsheetRibbon>
</SfSpreadsheet>

@code {

    private List<SpreadsheetRibbonItem> GetItemCustomizations()
    {
        return new List<SpreadsheetRibbonItem>
        {
            // Hide the Strikethrough button
            new SpreadsheetRibbonItem { ItemId = "strikethrough", IsVisible = false },
            
            // Always disable the Link button (still visible but grayed out)
            new SpreadsheetRibbonItem { ItemId = "link", IsEnabled = false },
            
            // Reorder Italic button to appear first in Font Style group
            new SpreadsheetRibbonItem { ItemId = "italic", Order = 0 }
        };
    }
}

Adding Custom Ribbon Tabs

The ribbon can be extended with completely new tabs using the CustomRibbonTabs property. Custom tabs are rendered using Blazor components.

Property Type Description
Index int The position where the tab will be inserted.
Template RenderFragment The Blazor markup defining the tab’s content and layout
@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Ribbon

<SfSpreadsheet>
    <SpreadsheetRibbon CustomRibbonTabs="@GetCustomTabs()"></SpreadsheetRibbon>
</SfSpreadsheet>

@code {

    private List<SpreadsheetCustomRibbonTab> GetCustomTabs()
    {
        return new List<SpreadsheetCustomRibbonTab>
        {
            new SpreadsheetCustomRibbonTab
            {
                Index = 2,  // Insert after Insert tab
                Template = CreateCustomTabTemplate()
            }
        };
    }

    private RenderFragment CreateCustomTabTemplate()
    {
        return @<RibbonTab ID="toolsTab" HeaderText="Tools">
            <RibbonGroups>
                <RibbonGroup ID="utilitiesGroup" HeaderText="Utilities">
                    <RibbonCollections>
                        <RibbonCollection>
                            <RibbonItems>
                                <RibbonItem Type="RibbonItemType.Button">
                                    <RibbonButtonSettings Content="Analyze" IconCss="e-icons e-chart" @onclick="OnAnalyzeClick"></RibbonButtonSettings>
                                </RibbonItem>
                            </RibbonItems>
                        </RibbonCollection>
                    </RibbonCollections>
                </RibbonGroup>
            </RibbonGroups>
        </RibbonTab>;
    }

    private void OnAnalyzeClick()
    {
        // Custom analyze logic
        Console.WriteLine("Analyze clicked");
    }
}

Adding Custom Ribbon Groups

Custom groups can be added to existing tabs using the CustomRibbonGroups property.

Property Type Description
TabId string The ID of the parent tab where the group will be added
Index int The position where the group will be inserted within the tab.
Template RenderFragment The Blazor markup defining the group’s content
@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Ribbon

<SfSpreadsheet>
    <SpreadsheetRibbon CustomRibbonGroups="@GetCustomGroups()"></SpreadsheetRibbon>
</SfSpreadsheet>

@code {

    private List<SpreadsheetCustomRibbonGroup> GetCustomGroups()
    {
        return new List<SpreadsheetCustomRibbonGroup>
        {
            new SpreadsheetCustomRibbonGroup
            {
                TabId = "homeTab",
                Index = 8,  // Insert after existing groups
                Template = CreateCustomGroupTemplate()
            }
        };
    }

    private RenderFragment CreateCustomGroupTemplate()
    {
        return @<RibbonGroup ID="exportGroup" HeaderText="Export">
            <RibbonCollections>
                <RibbonCollection>
                    <RibbonItems>
                        <RibbonItem Type="RibbonItemType.Button">
                            <RibbonButtonSettings Content="Export PDF" IconCss="e-icons e-export-pdf" @onclick="OnExportPdf"></RibbonButtonSettings>
                        </RibbonItem>
                    </RibbonItems>
                </RibbonCollection>
            </RibbonCollections>
        </RibbonGroup>;
    }

    private void OnExportPdf()
    {
        // Export to PDF logic
        Console.WriteLine("Export PDF clicked");
    }
}

Adding Custom Ribbon Items

Custom items can be added to existing groups using the CustomRibbonItems property.

Property Type Description
GroupId string The ID of the parent group where the item will be added
Index int The position where the item will be inserted within the group.
Template RenderFragment The Blazor markup defining the item’s content
@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Ribbon

<SfSpreadsheet>
    <SpreadsheetRibbon CustomRibbonItems="@GetCustomItems()"></SpreadsheetRibbon>
</SfSpreadsheet>

@code {

    private List<SpreadsheetCustomRibbonItem> GetCustomItems()
    {
        return new List<SpreadsheetCustomRibbonItem>
        {
            new SpreadsheetCustomRibbonItem
            {
                GroupId = "fontStyleGroup",
                Index = 4,  // Insert after existing formatting items
                Template = CreateCustomItemTemplate()
            }
        };
    }

    private RenderFragment CreateCustomItemTemplate()
    {
        return @<RibbonItem Type="RibbonItemType.Button">
            <RibbonButtonSettings Content="Highlight Text"
                                  IconCss="e-icons e-highlight"
                                  @onclick="OnHighlightText">
            </RibbonButtonSettings>
        </RibbonItem>;
    }

    private void OnHighlightText()
    {
        // Highlight logic
        Console.WriteLine("Highlight Text clicked");
    }
}

Customizing the Ribbon Using Methods

Methods provide programmatic control over ribbon elements during the component lifecycle. This approach is ideal for dynamic customizations based on user actions or application state.

Showing and Hiding Tabs

Tab visibility can be controlled using the ShowRibbonTabs and HideRibbonTabs methods.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="HideTabs" Content="Hide Tabs"></SfButton>
<SfButton OnClick="ShowTabs" Content="Show Tabs"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void HideTabs()
    {
        SpreadsheetInstance.HideRibbonTabs(new List<string> { "Review", "View" });
    }

    private void ShowTabs()
    {
        SpreadsheetInstance.ShowRibbonTabs(new List<string> { "Review", "View" });
    }
}

Enabling and Disabling Tabs

Tab interactivity can be controlled using the EnableRibbonTabs and DisableRibbonTabs methods. Disabled tabs appear grayed out but remain visible.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="DisableTabs" Content="Disable Tabs"></SfButton>
<SfButton OnClick="EnableTabs" Content="Enable Tabs"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void DisableTabs()
    {
        SpreadsheetInstance.DisableRibbonTabs(new List<string> { "Home", "Review", "View" });
    }

    private void EnableTabs()
    {
        SpreadsheetInstance.EnableRibbonTabs(new List<string> { "Home", "Review", "View" });
    }
}

Showing and Hiding Items

Item visibility can be controlled using the ShowRibbonItems and HideRibbonItems methods. Hidden items are completely removed from the ribbon interface.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="HideItems" Content="Hide Items"></SfButton>
<SfButton OnClick="ShowItems" Content="Show Items"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void HideItems()
    {
        SpreadsheetInstance.HideRibbonItems(new List<string> { "cut", "paste" });
    }

    private void ShowItems()
    {
        SpreadsheetInstance.ShowRibbonItems(new List<string> { "cut", "paste" });
    }
}

Enabling and Disabling Items

Item interactivity can be controlled using the EnableRibbonItems and DisableRibbonItems methods. Disabled items appear grayed out but remain visible.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="DisableItems" Content="Disable Items"></SfButton>
<SfButton OnClick="EnableItems" Content="Enable Items"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void DisableItems()
    {
        SpreadsheetInstance.DisableRibbonItems(new List<string> { "cut", "italic", "bold" });
    }

    private void EnableItems()
    {
        SpreadsheetInstance.EnableRibbonItems(new List<string> { "cut", "italic", "bold" });
    }
}

Adding Ribbon Tabs

Custom tabs can be added dynamically using the AddRibbonTab method.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons
@using Syncfusion.Blazor.Ribbon

<SfButton OnClick="AddTab" Content="Add Custom Tab"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void AddTab()
    {
        var tab = new RibbonTab 
        { 
            HeaderText = "Custom",
            ID = "customTab" 
        };
        
        // Add tab at position 1 (after Home)
        SpreadsheetInstance.AddRibbonTab(tab, index: 1);
    }
}

Adding Ribbon Items

Custom items can be added to existing groups using the AddRibbonItems method.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons
@using Syncfusion.Blazor.Ribbon

<SfButton OnClick="AddButton" Content="Add Custom Button"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void AddButton()
    {
        var item = new RibbonItem
        {
            ID = "customButton",
            Type = RibbonItemType.Button,
            ButtonSettings = new RibbonButtonSettings
            {
                Content = "My Action",
                OnClick = EventCallback.Factory.Create<MouseEventArgs>(this, OnCustomAction)
            }
        };

        // Add item to a group in Home tab at index 0
        SpreadsheetInstance.AddRibbonItems("Home", new List<RibbonItem> { item }, index: 0);
    }

    private void OnCustomAction(MouseEventArgs args)
    {
        Console.WriteLine("Custom button clicked");
    }
}

Customizing the File Menu

The File menu in the Spreadsheet component can be customized to add, show or hide, and enable or disable menu items, allowing dynamic control over its functionality based on application requirements.

Adding File Menu Items

Custom menu items can be added to the File menu using the AddFileMenuItems method.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Navigations
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="AddMenuItems" Content="Add Menu Items"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void AddMenuItems()
    {
        var exportItems = new List<MenuItem>
        {
            new MenuItem { Id = "exportXlsx", Text = "XLSX", IconCss = "e-icons e-file-excel" },
            new MenuItem { Id = "exportCsv", Text = "CSV", IconCss = "e-icons e-file-export" }
        };

        var exportMenu = new List<MenuItem>
        {
            new MenuItem
            {
                Id = "exportAs",
                Text = "Export As",
                IconCss = "e-icons e-export",
                Items = exportItems
            }
        };

        // Add export menu at position 0
        SpreadsheetInstance.AddFileMenuItems(exportMenu, index: 0);
    }
}

Showing and Hiding File Menu Items

Menu item visibility can be controlled using the ShowFileMenuItems and HideFileMenuItems methods.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="HideItems" Content="Hide Menu Items"></SfButton>
<SfButton OnClick="ShowItems" Content="Show Menu Items"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void HideItems()
    {
        // Hide menu items
        SpreadsheetInstance.HideFileMenuItems(new List<string> { "Open", "Save As"});
    }

    private void ShowItems()
    {
        // Show previously hidden menu items
        SpreadsheetInstance.ShowFileMenuItems(new List<string> { "Open", "Save As"});
    }
}

Enabling and Disabling File Menu Items

Menu item interactivity can be controlled using the EnableFileMenuItems and DisableFileMenuItems methods.

@page "/"
@using Syncfusion.Blazor.Spreadsheet
@using Syncfusion.Blazor.Buttons

<SfButton OnClick="EnableItems" Content="Enable Menu Items"></SfButton>
<SfButton OnClick="DisableItems" Content="Disable Menu Items"></SfButton>

<SfSpreadsheet @ref="SpreadsheetInstance">
    <SpreadsheetRibbon></SpreadsheetRibbon>
</SfSpreadsheet>

@code {
    public SfSpreadsheet SpreadsheetInstance { get; set; }

    private void EnableItems()
    {
        // Enable menu items
        SpreadsheetInstance.EnableFileMenuItems(new List<string> { "Open", "Save As" });
    }

    private void DisableItems()
    {
        // Disable menu items (appear grayed out)
        SpreadsheetInstance.DisableFileMenuItems(new List<string> { "Open", "Save As" });
    }
}

Reference

The following section contains identifier references for customizing the ribbon through property binding and methods. Use these IDs when configuring ribbon customizations through the RibbonTabItems, RibbonGroupItems, and RibbonItems properties, or when calling dynamic control methods during component execution.

Ribbon Tab

Tab ID Display Name Description
homeTab Home Contains formatting, editing, and data protection commands
insertTab Insert Contains commands for inserting images, hyperlinks, and functions
formulasTab Formulas Contains calculation options and named range management commands
reviewTab Review Contains worksheet protection and name manager commands
viewTab View Contains view options such as gridlines

Ribbon Group

Group ID Tab Description
undoRedoGroup Home Undo and redo cell modifications
clipboardGroup Home Cut, copy, and paste operations
numberFormatGroup Home Number format selection and application
fontFamilyGroup Home Font family selection
fontSizeGroup Home Font size adjustment
fontStyleGroup Home Text formatting options: bold, italic, underline, strikethrough, font color
bordersGroup Home Border styling and color application
backgroundColorGroup Home Cell background color and cell merge operations
fontAlignmentGroup Home Text alignment and wrap options
conditionalFormattingGroup Home Conditional formatting rule creation and management
dataOperationsGroup Home Data clearing and sorting operations
insertGroup Insert Hyperlink and image insertion
insertFunctionsGroup Formulas Function insertion and formula building
calculationOptionGroup Formulas Calculation mode selection
manualCalculationGroup Formulas Manual sheet and workbook calculation
namedRangesGroup Formulas Named range definition and management
protectionGroup Review Worksheet and workbook protection
viewGroup View Grid display and view customization options

Ribbon Items

Item ID Description
undo Undo the last cell modification
redo Redo the last undone action
cut Remove selected cells to clipboard
copy Copy selected cells to clipboard
paste Paste clipboard contents to selected cells
numberFormat Apply number format to selected cells
fontFamily Change the font family of selected text
fontSize Adjust the font size of selected text
bold Apply or remove bold formatting
italic Apply or remove italic formatting
underline Apply or remove underline formatting
strikethrough Apply or remove strikethrough formatting
fontColor Change the color of selected text
borderPicker Apply borders to selected cells
colorPicker Set the background color of selected cells
mergeCell Merge selected cells into one
horizontalAlignment Set horizontal text alignment
verticalAlignment Set vertical text alignment
wrapText Enable or disable text wrapping in cells
conditionalFormat Create and apply conditional formatting rules
clear Clear contents from selected cells
sort Sort data in ascending or descending order
link Insert or edit a hyperlink
image Insert an image into the worksheet
insertFunction Insert a formula function
calculationOption Change the calculation mode
calculateSheet Recalculate the current sheet
calculateWorkbook Recalculate all sheets in the workbook
nameManager Define and manage named ranges
protectSheet Enable or disable worksheet protection
protectWorkbook Enable or disable workbook protection
gridlines Show or hide gridlines in the worksheet