Excel Form Controls in C# and VB.NET

With GemBox.Spreadsheet you can work with spreadsheets that contain form controls such as check boxes, radio (option) buttons, combo boxes, buttons, list boxes, spin buttons, scroll bars, labels, or group boxes.

The following example shows how to create a workbook with some of the most common form controls.

Create Excel file with form controls created using GemBox.Spreadsheet
Screenshot of Excel file created with form controls
using GemBox.Spreadsheet;

class Program
{
    static void Main()
    {
        // If using the Professional version, put your serial key below.
        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

        var workbook = new ExcelFile();
        var worksheet = workbook.Worksheets.Add("Form Controls");

        var checkBox = worksheet.FormControls.AddCheckBox("Simple check box", "B2", 100, 15, LengthUnit.Point);
        checkBox.CellLink = worksheet.Cells["A2"];
        checkBox.Checked = true;

        worksheet.Cells["A4"].Value = "VALUE A";
        worksheet.Cells["A5"].Value = "VALUE B";
        worksheet.Cells["A6"].Value = "VALUE C";
        worksheet.Cells["A7"].Value = "VALUE D";
        var comboBox = worksheet.FormControls.AddComboBox("B4", 100, 20, LengthUnit.Point);
        comboBox.InputRange = worksheet.Cells.GetSubrange("A4:A7");
        comboBox.SelectedIndex = 2;

        var scrollBar = worksheet.FormControls.AddScrollBar("B9", 100, 20, LengthUnit.Point);
        scrollBar.CellLink = worksheet.Cells["A9"];
        scrollBar.MinimumValue = 10;
        scrollBar.MaximumValue = 50;
        scrollBar.CurrentValue = 20;

        workbook.Save("Form Controls.xlsx");
    }
}
Imports GemBox.Spreadsheet

Module Program

    Sub Main()

        ' If using the Professional version, put your serial key below.
        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")

        Dim workbook As New ExcelFile()
        Dim worksheet = workbook.Worksheets.Add("Form Controls")

        Dim checkBox = worksheet.FormControls.AddCheckBox("Simple check box", "B2", 100, 15, LengthUnit.Point)
        checkBox.CellLink = worksheet.Cells("A2")
        checkBox.Checked = True

        worksheet.Cells("A4").Value = "VALUE A"
        worksheet.Cells("A5").Value = "VALUE B"
        worksheet.Cells("A6").Value = "VALUE C"
        worksheet.Cells("A7").Value = "VALUE D"
        Dim comboBox = worksheet.FormControls.AddComboBox("B4", 100, 20, LengthUnit.Point)
        comboBox.InputRange = worksheet.Cells.GetSubrange("A4:A7")
        comboBox.SelectedIndex = 2

        Dim scrollBar = worksheet.FormControls.AddScrollBar("B9", 100, 20, LengthUnit.Point)
        scrollBar.CellLink = worksheet.Cells("A9")
        scrollBar.MinimumValue = 10
        scrollBar.MaximumValue = 50
        scrollBar.CurrentValue = 20

        workbook.Save("Form Controls.xlsx")
    End Sub
End Module

The form controls are stored in the ExcelWorksheet.FormControls collection and are represented with one of the derived types of ExcelFormControl.

The following example shows how to read and update form controls.

Read and update form controls from Excel file using GemBox.Spreadsheet
Screenshot of updated values from Excel's form controls
using System;
using GemBox.Spreadsheet;
using GemBox.Spreadsheet.Drawing;

class Program
{
    static void Main()
    {
        // If using the Professional version, put your serial key below.
        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

        var workbook = ExcelFile.Load("%#FormControls.xlsx%");
        var worksheet = workbook.Worksheets[0];

        // Update CheckBox control.
        var checkBox = worksheet.FormControls[0] as CheckBox;
        checkBox.Checked = false;

        // Read CheckBox control.
        Console.WriteLine("CheckBox checked: " + checkBox.Checked);
        Console.WriteLine("Linked cell value: " + checkBox.CellLink?.Value);
        Console.WriteLine();

        // Update ComboBox control.
        var comboBox = worksheet.FormControls[1] as ComboBox;
        comboBox.SelectedIndex = 1;

        // Read ComboBox control.
        Console.WriteLine("ComboBox range: " + comboBox.InputRange?.Name);
        Console.WriteLine("ComboBox selected: " + comboBox.SelectedValue);
        Console.WriteLine();

        // Update ScrollBar control.
        var scrollBar = worksheet.FormControls[2] as ScrollBar;
        scrollBar.CurrentValue = 33;

        // Read ScrollBar control.
        Console.WriteLine("ScrollBar current: " + scrollBar.CurrentValue);
        Console.WriteLine("Linked cell value: " + scrollBar.CellLink?.Value);
    }
}
Imports System
Imports GemBox.Spreadsheet
Imports GemBox.Spreadsheet.Drawing

Module Program

    Sub Main()

        ' If using the Professional version, put your serial key below.
        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")

        Dim workbook = ExcelFile.Load("%#FormControls.xlsx%")
        Dim worksheet = workbook.Worksheets(0)

        ' Update CheckBox control.
        Dim checkBox = TryCast(worksheet.FormControls(0), CheckBox)
        checkBox.Checked = False

        ' Read CheckBox control.
        Console.WriteLine("CheckBox checked: " & checkBox.Checked)
        Console.WriteLine("Linked cell value: " & checkBox.CellLink?.Value)
        Console.WriteLine()

        ' Update ComboBox control.
        Dim comboBox = TryCast(worksheet.FormControls(1), ComboBox)
        comboBox.SelectedIndex = 1

        ' Read ComboBox control.
        Console.WriteLine("ComboBox range: " & comboBox.InputRange?.Name)
        Console.WriteLine("ComboBox selected: " & comboBox.SelectedValue)
        Console.WriteLine()

        ' Update ScrollBar control.
        Dim scrollBar = TryCast(worksheet.FormControls(2), ScrollBar)
        scrollBar.CurrentValue = 33

        ' Read ScrollBar control.
        Console.WriteLine("ScrollBar current: " & scrollBar.CurrentValue)
        Console.WriteLine("Linked cell value: " & scrollBar.CellLink?.Value)
    End Sub
End Module

See also


Next steps

GemBox.Spreadsheet is a .NET component that enables you to read, write, edit, convert, and print spreadsheet files from your .NET applications using one simple API.

Download Buy