New to Telerik UI for BlazorStart a free 30-day trial

Spreadsheet Tools

The Telerik Blazor Spreadsheet organizes all its tools in a tool set with one or more tool set items. This article describes the built-in Spreadsheet tools and how to define custom tools.

In this article:

Tool Set

The top of the Spreadsheet component displays a Menu and a ToolBar:

  • The Menu and the ToolBar make up the Spreadsheet tool set (SpreadsheetToolSet).
  • The tool set has an Items property and includes one or more tool set items (SpreadsheetToolSetItem). Each Menu item points to one tool set item.
  • Each tool set item includes one or more tools (SpreadsheetTool).

The SpreadsheetToolSetItem class has the following properties:

Property NameTypeDescription
TitlestringThe tool set name. Regard this as a single Menu item.
ToolsList<SpreadsheetTool>The collection of tools in the tool set item. Regard this collection as one TooBar instance.

The Spreadsheet provides ready-to-use SpreadsheetToolSet objects, for example, SpreadsheetToolSets.All. A tool set provides a specific distribution and order of tools across tool set items. However, each tool can exist in any tool set item.

Built-in Tools

The following table lists all Spreadsheet tools, sorted by their default tool set and order index.

Tool NameClass NameDefault Tool Set
OpenSpreadsheetOpenFileToolFile
DownloadSpreadsheetDownloadFileToolFile
UndoSpreadsheetUndoToolHome
RedoSpreadsheetRedoToolHome
Font FamilySpreadsheetFontFamilyToolHome
Font SizeSpreadsheetFontSizeToolHome
BoldSpreadsheetBoldToolHome
ItalicSpreadsheetItalicToolHome
UnderlineSpreadsheetUnderlineToolHome
Text ColorSpreadsheetTextColorToolHome
Background ColorSpreadsheetBackgroundColorToolHome
Horizontal AlignSpreadsheetHorizontalAlignToolHome
Vertical AlignSpreadsheetVerticalAlignToolHome
Text WrapSpreadsheetTextWrapToolHome
Number and Date FormatSpreadsheetNumberFormatToolFormat
Decrease DecimalsSpreadsheetDecreaseDecimalToolFormat
Increase DecimalsSpreadsheetIncreaseDecimalToolFormat
Insert LinkSpreadsheetInsertLinkToolInsert
Insert ImageSpreadsheetInsertImageToolInsert
Merge CellsSpreadsheetMergeCellsToolView
Toggle Grid LinesSpreadsheetGridLinesToolView

The Spreadsheet component provides a few tools that have no specific action:

Tool NameClass NameDescription
SeparatorSpreadsheetToolSeparatorThe Separator tool inserts a visible border between other tools in the same tool set.
CustomSpreadsheetCustomToolThe Custom tool allows you to add custom content to a Spreadsheet tool set.

Customize Built-in Tool Sets

The Spreadsheet uses Telerik Blazor components to create its built-in tool sets and tools. You can add, remove, and reorder tools in the built-in tool sets. You can also customize the exposed tool properties.

The example below shows how to:

  • Get the File and Home tool set items. The built-in tool set items are distinguishable by their index or Title. The title can change in localized applications, so you may need to use the ITelerikStringLocalizer service to search for the localized Title string.
  • Change the label of the File tool set item.
  • Obtain reference to a few built-in tools inside the Home tool set item. You can find tools by their type or order index. Using order index is not future-proof, as the built-in tool sets can change.
  • Set the Data property of the Font Family and Font Size tools to change the available drop down options.
  • Set the Colors property of the Text Color and Background Color tools to change the available color palettes.
  • Disable or remove the Text Wrap tool.

Customizing tools from the default Spreadsheet tool set

@using Telerik.Blazor.Components.Spreadsheet
@using Telerik.Blazor.Components.Spreadsheet.ToolBar.ToolTypes
@using Telerik.Blazor.Resources
@using Telerik.Blazor.Services

@* Needed to find the built-in Home tool by its localized title if the application is using more than one language *@
@* @inject ITelerikStringLocalizer Localizer *@

<TelerikSpreadsheet Tools="@DefaultToolsWithCustomizations">
</TelerikSpreadsheet>

@code {
    private SpreadsheetToolSet DefaultToolsWithCustomizations { get; set; } = SpreadsheetToolSets.All;

    protected override void OnInitialized()
    {
        // Find the built-in File tool set item by its index.
        SpreadsheetToolSetItem? fileToolSetItem = DefaultToolsWithCustomizations.Items.FirstOrDefault();

        // Rename the File tool set item
        if (fileToolSetItem != null)
        {
            fileToolSetItem.Title = "Custom File Label";
        }

        // Find the built-in Home tool set item.
        // This example uses hard-coded title string ("Home") but you may use the tool's localized title if the application is using more than one language.
        // SpreadsheetToolSetItem? homeToolSetItem = DefaultToolsWithCustomizations.Items
        //     .FirstOrDefault(x => x.Title == Localizer[nameof(Messages.Spreadsheet_ToolBar_HomeMenu)]);

        SpreadsheetToolSetItem? homeToolSetItem = DefaultToolsWithCustomizations.Items
        .FirstOrDefault(x => x.Title == "Home");

        var fontFamilyTool = homeToolSetItem?.Tools.FirstOrDefault(x => x is SpreadsheetFontFamilyTool) as SpreadsheetFontFamilyTool;

        if (fontFamilyTool != null)
        {
            // Change the Font Family tool data.
            fontFamilyTool.Data = new List<SpreadsheetDropDownListToolItem>()
            {
                new SpreadsheetDropDownListToolItem { Text = "Arial", Value = "Arial" },
                new SpreadsheetDropDownListToolItem { Text = "Helvetica", Value = "Helvetica" },
                new SpreadsheetDropDownListToolItem { Text = "Tahoma", Value = "Tahoma" },
                new SpreadsheetDropDownListToolItem { Text = "Verdana", Value = "Verdana" }
            };
        }

        var fontSizeTool = homeToolSetItem?.Tools.FirstOrDefault(x => x is SpreadsheetFontSizeTool) as SpreadsheetFontSizeTool;

        if (fontSizeTool != null)
        {
            // Change the Font Size tool width.
            fontSizeTool.Width = "6em";

            // Change the Font Size tool data.
            fontSizeTool.Data = new List<SpreadsheetDropDownListToolItem>()
            {
                new SpreadsheetDropDownListToolItem { Text = "12px", Value = "12px" },
                new SpreadsheetDropDownListToolItem { Text = "16px", Value = "16px" },
                new SpreadsheetDropDownListToolItem { Text = "24px", Value = "24px" },
                new SpreadsheetDropDownListToolItem { Text = "36px", Value = "36px" }
            };
        }

        var textColorTool = homeToolSetItem?.Tools.FirstOrDefault(x => x is SpreadsheetTextColorTool) as SpreadsheetTextColorTool;

        if (textColorTool != null)
        {
            // Change the Text Color tool palette.
            textColorTool.Colors = ColorPalettePresets.Basic;
        }

        var backgroundColorTool = homeToolSetItem?.Tools.FirstOrDefault(x => x is SpreadsheetTextColorTool) as SpreadsheetTextColorTool;

        if (backgroundColorTool != null)
        {
            // Change the Background Color tool palette.
            backgroundColorTool.Colors = ColorPalettePresets.Office;
        }

        var wrapTool = homeToolSetItem?.Tools.FirstOrDefault(x => x is SpreadsheetTextWrapTool) as SpreadsheetTextWrapTool;

        if (wrapTool != null)
        {
            // Disable the Wrap tool.
            //wrapTool.Enabled = false;

            // Or remove the Wrap tool.
            homeToolSetItem?.Tools.Remove(wrapTool);
        }

        base.OnInitialized();
    }
}

Create a Custom Tool Set

Here is how to define a custom tool set from scratch. You can also set the available properties of each tool, such as Class, Enabled, Icon, and Title.

  1. Set the Spreadsheet Tools parameter to a new SpreadsheetToolSet instance, for example, SpreadsheetTools.
  2. Set the Items property of SpreadsheetTools to a new List<SpreadsheetToolSetItem>().
  3. Add one or more SpreadsheetToolSetItem objects to the Items list.
  4. Populate each SpreadsheetToolSetItem object with built-in tools or custom tools.

Creating a custom tool set collection from scratch

@using Telerik.Blazor.Components.Spreadsheet

<TelerikSpreadsheet Tools="@SpreadsheetTools">
</TelerikSpreadsheet>

@code {
    private SpreadsheetToolSet SpreadsheetTools { get; set; } = new SpreadsheetToolSet();

    protected override void OnInitialized()
    {
        SpreadsheetTools.Items = new List<SpreadsheetToolSetItem>()
        {
            new SpreadsheetToolSetItem()
            {
                Title = "Custom Tool Set Item",
                Tools = new List<SpreadsheetTool>()
                {
                    new SpreadsheetOpenFileTool(),
                    new SpreadsheetDownloadFileTool(),

                    new SpreadsheetToolSeparator(),

                    new SpreadsheetUndoTool(),
                    new SpreadsheetRedoTool(),

                    new SpreadsheetToolSeparator(),

                    new SpreadsheetHorizontalAlignTool(),
                    new SpreadsheetTextWrapTool(),
                    new SpreadsheetNumberFormatTool(),
                    new SpreadsheetInsertLinkTool()
                }
            }
        };

        base.OnInitialized();
    }
}

Define Custom Tools

The SpreadsheetCustomTool type has a Template property that is a RenderFragment. Generally, custom tools can do one of the following:

  • Perform actions that relate to the Spreadsheet component, loaded Excel document, or app business logic.
  • Modify the Excel document programmatically with the help of RadSpreadProcessing.

Creating custom Spreadsheet tools

@using Telerik.Blazor.Components.Spreadsheet

<p>Click on <strong>File</strong> to see and use the custom tool.</p>

<TelerikSpreadsheet Data="@SpreadsheetData"
                    Tools="@SpreadsheetToolsWithCustomTool">
</TelerikSpreadsheet>

@code {
    private byte[]? SpreadsheetData { get; set; }

    private SpreadsheetToolSet SpreadsheetToolsWithCustomTool { get; set; } = SpreadsheetToolSets.All;

    protected override void OnInitialized()
    {
        SpreadsheetToolSetItem fileToolSetItem = SpreadsheetToolsWithCustomTool.Items.First();

        // Add a custom tool to the first tool set item
        fileToolSetItem.Tools.Add(new SpreadsheetCustomTool()
        {
            Template = CustomToolFragment
        });

        base.OnInitialized();
    }

    private RenderFragment CustomToolFragment =>
        @<TelerikButton Icon="@SvgIcon.FileExcel"
                        ButtonType="@ButtonType.Button"
                        ThemeColor="@ThemeConstants.Button.ThemeColor.Primary"
                        Title="Load Excel Template"
                        FillMode="@ThemeConstants.Button.FillMode.Flat"
                        OnClick="@OnCustomToolClick">
        </TelerikButton>;

    private void OnCustomToolClick()
    {
        SpreadsheetData = Convert.FromBase64String(SampleExcelFile);
    }

    private string SampleExcelFile = "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";
}

See Also