diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/formatting.md b/Document-Processing/Excel/Spreadsheet/Blazor/formatting.md
index 9aed81b5d..80348e5db 100644
--- a/Document-Processing/Excel/Spreadsheet/Blazor/formatting.md
+++ b/Document-Processing/Excel/Spreadsheet/Blazor/formatting.md
@@ -213,9 +213,470 @@ Borders can be applied programmatically to a specific cell or range of cells usi
{% endhighlight %}
{% endtabs %}
+## Conditional Formatting
-### Limitations
+Conditional formatting enables automatic visual formatting of cells based on specified conditions, helping to highlight data patterns, identify outliers, and improve data interpretation. The Blazor Spreadsheet component provides comprehensive conditional formatting capabilities including color scales, data bars, icon sets, and custom formatting rules. These formats are Excel-compatible, respect worksheet protection settings, and integrate seamlessly with undo/redo operations.
-* `Conditional formatting` is currently not supported in the Blazor Spreadsheet component.
-* A custom number format UI dialog is not available, custom formats must be applied using the API.
-* After inserting a row or column, border expansion is not currently supported.
\ No newline at end of file
+### Enabling Conditional Formatting
+
+The entire conditional formatting functionality can be globally enabled or disabled using the `AllowConditionalFormat` property. By default, this property is set to **true**.
+
+### Applying Conditional Formatting
+
+Conditional formatting can be applied through the UI or programmatically:
+
+**UI Method:**
+1. Select the target cell range
+2. Click the **Conditional Formatting** button in the **Home** tab of the Ribbon
+3. Choose the desired formatting rule type and configure the conditions
+
+**Programmatic Method:**
+Apply conditional formatting using the `ConditionalFormatAsync()` method with a `ConditionalFormatRule` object to define the condition, format type, range, and styling.
+
+The Blazor Spreadsheet component supports the following conditional formatting rule types:
+
+### Highlight Cells Rules
+
+Highlight cells rules apply preset color formatting based on cell values or text content. This rule type is ideal for quickly identifying cells that meet specific value-based conditions. The highlighting uses combinations of fill colors and text colors to ensure visibility while maintaining readability.
+
+**Supported Highlight Cell Rule Types:**
+
+| ConditionalFormatType | Description | Use Case |
+|---|---|---|
+| `GreaterThan` | Highlights cells with values greater than a specified threshold | Flag high values (e.g., sales above quota) |
+| `LessThan` | Highlights cells with values less than a specified threshold | Flag low values (e.g., inventory below minimum) |
+| `Between` | Highlights cells with values falling within a specified range | Identify acceptable ranges (e.g., target performance zones) |
+| `EqualTo` | Highlights cells with values equal to a specified value | Highlight exact matches (e.g., specific status codes) |
+| `ContainsText` | Highlights cells containing specified text | Flag entries with keywords (e.g., "Pending") |
+| `DateOccur` | Highlights cells containing dates matching a specified time period | Emphasize dates (e.g., dates this month or year) |
+| `Duplicate` | Highlights cells with duplicate values within the evaluated range | Identify repeated entries |
+| `Unique` | Highlights cells with unique values within the evaluated range | Flag non-duplicate entries |
+
+**Available Preset Color Styles:**
+
+| ConditionalFormatColor | Background Color | Text Color | Use Case |
+|---|---|---|---|
+| `GreenFillWithDarkGreenText` | Green | Dark Green | Positive results, success indicators |
+| `YellowFillWithDarkYellowText` | Yellow | Dark Yellow | Warnings, caution indicators |
+| `RedFillWithDarkRedText` | Red | Dark Red | Errors, negative results, alerts |
+| `RedFill` | Red | Default | Highlighter effect with red background |
+| `RedText` | Default | Red | Text-only highlighting for critical values |
+
+**Example: Highlight Cells Greater Than a Threshold**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/StudentScores.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task HighlightHighScores()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.GreaterThan,
+ PrimaryValue = "80",
+ Range = "B2:B50",
+ ConditionalFormatColor = ConditionalFormatColor.GreenFillWithDarkGreenText
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Top/Bottom Rules
+
+Top/Bottom rules apply formatting based on statistical rankings and averages within a range. This rule type is beneficial for identifying performance outliers, top performers, or values that deviate from the average. These rules are particularly useful for large datasets where manual identification would be time-consuming.
+
+**Supported Top/Bottom Rule Types:**
+
+| ConditionalFormatType | Description | Use Case |
+|---|---|---|
+| `Top10Items` | Highlights the top N items in the range by value rank | Identify top 10 sales, scores, or performers |
+| `Bottom10Items` | Highlights the bottom N items in the range by value rank | Flag lowest performers or smallest values |
+| `Top10Percentage` | Highlights the top N percent of items in the range by value | Identify highest-performing percentile |
+| `Bottom10Percentage` | Highlights the bottom N percent of items in the range by value | Flag under performing percentile |
+| `AboveAverage` | Highlights cells with values above the average of the range | Identify above-trend values |
+| `BelowAverage` | Highlights cells with values below the average of the range | Identify below-trend values |
+
+**Example: Highlight Top 10 Sales Performers**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/SalesData.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task HighlightTopPerformers()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.Top10Items,
+ Range = "C2:C100",
+ ConditionalFormatColor = ConditionalFormatColor.GreenFillWithDarkGreenText
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Data Bars
+
+Data bars provide in-cell graphical representation of values, where the bar length corresponds to the cell value relative to the range. The longest bar represents the highest value, while shorter bars represent lower values. Data bars are particularly effective for visualizing trends and comparing values across a large dataset without requiring separate chart elements.
+
+**Supported Data Bar Types:**
+
+| ConditionalFormatType | Bar Color | Best Used For |
+|---|---|---|
+| `BlueDataBar` | Blue | Neutral, technical data |
+| `GreenDataBar` | Green | Positive performance, growth indicators |
+| `RedDataBar` | Red | Negative performance, risk indicators |
+| `OrangeDataBar` | Orange | Warnings, moderate values |
+| `LightBlueDataBar` | Light Blue | Soft visualization, secondary metrics |
+| `PurpleDataBar` | Purple | Custom analytics, specialized metrics |
+
+**Example: Visualize Revenue Data with Data Bars**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/FinancialData.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task ApplyRevenueDataBars()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.GreenDataBar,
+ Range = "D2:D25"
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Color Scales
+
+Color scales apply a gradient of colors to cells based on their values within the range. The color intensity corresponds to the cell value: minimum values receive one color, maximum values receive another color, and intermediate values receive proportional color blends. This approach provides intuitive visual representation of value distributions across a dataset.
+
+**Supported Color Scale Formats:**
+
+**Three-Color Scales (Min → Mid → Max):**
+
+| ConditionalFormatType | Scale | Use Case |
+|---|---|---|
+| `GreenYellowRedColorScale` | Green → Yellow → Red | Performance analysis (good to poor) |
+| `RedYellowGreenColorScale` | Red → Yellow → Green | Inverse performance (poor to good) |
+| `GreenWhiteRedColorScale` | Green → White → Red | Diverging scale with neutral center |
+| `RedWhiteGreenColorScale` | Red → White → Green | Inverse diverging scale |
+
+**Two-Color Scales (Min → Max):**
+
+| ConditionalFormatType | Scale | Use Case |
+|---|---|---|
+| `BlueWhiteRedColorScale` | Blue → White → Red | Temperature or intensity mapping |
+| `RedWhiteBlueColorScale` | Red → White → Blue | Inverse temperature/intensity |
+| `GreenWhiteColorScale` | Green → White | Positive trend visualization |
+| `WhiteGreenColorScale` | White → Green | Inverse positive trend |
+| `RedWhiteColorScale` | Red → White | Negative trend visualization |
+| `WhiteRedColorScale` | White → Red | Inverse negative trend |
+| `GreenYellowColorScale` | Green → Yellow | Range-based analysis |
+| `YellowGreenColorScale` | Yellow → Green | Inverse range analysis |
+
+**Example: Apply Temperature-Based Color Scale**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/TemperatureData.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task ApplyTemperatureScale()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.BlueWhiteRedColorScale,
+ Range = "B2:B30"
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Icon Sets
+
+Icon sets display symbolic representations of cell values, where different icons or icon variations indicate value ranges or performance levels. Each icon represents a percentile range or performance tier, making it easy to quickly identify value categories at a glance. Icon sets are effective for status reporting, performance ratings, and categorical analysis.
+
+**Supported Icon Sets by Category:**
+
+**Arrow Icons (Directional Indicators):**
+
+| ConditionalFormatType | Color | Levels | Use Case |
+|---|---|---|---|
+| `ThreeArrows` | Colored (↑ ↔ ↓) | 3 | Upward/stable/downward trend indication |
+| `ThreeArrowsGray` | Grayscale (↑ ↔ ↓) | 3 | Neutral trend visualization |
+| `FourArrows` | Colored (↑↑ ↑ ↓ ↓↓) | 4 | Detailed performance rankings |
+| `FourArrowsGray` | Grayscale (↑↑ ↑ ↓ ↓↓) | 4 | Neutral detailed rankings |
+| `FiveArrows` | Colored (↑↑ ↑ ↔ ↓ ↓↓) | 5 | Five-level performance scale |
+| `FiveArrowsGray` | Grayscale (↑↑ ↑ ↔ ↓ ↓↓) | 5 | Neutral five-level scale |
+
+**Traffic Light Icons (Status Indicators):**
+
+| ConditionalFormatType | Style | Levels | Use Case |
+|---|---|---|---|
+| `ThreeTrafficLights1` | Standard Lights | 3 | Stop/caution/go status (Red/Yellow/Green) |
+| `ThreeTrafficLights2` | Alternate Lights | 3 | Alternative traffic light coloring |
+| `FourTrafficLights` | Four Lights | 4 | Detailed status with additional state |
+
+**Symbol and Sign Icons (Status and Warning):**
+
+| ConditionalFormatType | Icon Type | Levels | Use Case |
+|---|---|---|---|
+| `ThreeSigns` | Caution Signs | 3 | Warning levels and alerts |
+| `ThreeSymbols` | Colored Symbols (✓ ○ ✗) | 3 | Pass/neutral/fail indicators |
+| `ThreeSymbols2` | Alternative Symbols | 3 | Alternative symbol representation |
+
+**Rating and Quality Icons:**
+
+| ConditionalFormatType | Icon Type | Levels | Use Case |
+|---|---|---|---|
+| `FourRating` | Stars (☆☆☆☆ to ★★★★) | 4 | Four-star rating scale |
+| `FiveRating` | Stars (☆☆☆☆☆ to ★★★★★) | 5 | Five-star rating scale |
+| `FiveBoxes` | Boxes/Quarters | 5 | Completion or fill level |
+| `FiveQuarters` | Quarter Blocks | 5 | Fractional or percentage representation |
+
+**Categorical Icons:**
+
+| ConditionalFormatType | Icon Type | Levels | Use Case |
+|---|---|---|---|
+| `ThreeFlags` | Flag Symbols | 3 | Flagging, categorization, priority marking |
+| `ThreeTriangles` | Triangles | 3 | Direction or trend triangles |
+| `ThreeStars` | Stars | 3 | Star rating or importance indicators |
+| `FourRedToBlack` | Progressive Colors | 4 | Severity scale from red to black |
+
+**Example: Apply Performance Rating Icons**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/EmployeePerformance.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task ApplyPerformanceRating()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.FiveRating,
+ Range = "E2:E50"
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Custom Format
+
+Custom formatting allows advanced styling of cells that meet specific conditions by directly setting properties such as font color, background color, font style (bold/italic), font weight, and underline effects. This provides fine-grained control over visual appearance beyond preset color schemes.
+
+**Supported Custom Format Properties:**
+- **Color**: Font/text color
+- **Background Color**: Cell background fill color
+- **Font Style**: Italic styling
+- **Font Weight**: Bold styling
+- **Underline**: Text underline decoration
+
+N> Custom format styling is supported only for **Highlight Cells Rules** and **Top/Bottom Rules** conditional format types. Data bars, color scales, and icon sets do not support custom formatting.
+
+**Example: Custom Format for Conditional Highlighting**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/SalesData.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task ApplyCustomFormat()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.GreaterThan,
+ PrimaryValue = "50000",
+ Range = "B2:B100",
+ // Custom styling properties
+ FontColor = "#FFFFFF", // White text
+ BackgroundColor = "#0070C0" // Blue background
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Clearing Conditional Formats
+
+Conditional formatting rules can be removed from cells when no longer needed. This allows for dynamic rule management and prevents formatting conflicts when rules need to be updated or replaced.
+
+**Clearing Conditional Formats:**
+
+Conditional formatting can be cleared through the UI or programmatically:
+
+**UI Method:**
+1. Select the cell range containing the conditional formats to remove
+2. Click the **Conditional Formatting** button in the **Home** tab
+3. Select **Clear Rules** and choose:
+ - **Clear Rules from Selected Cells** - Remove rules only from the selected range
+ - **Clear Rules from Entire Sheet** - Remove all conditional formatting from the worksheet
+
+**Programmatic Method:**
+Use the `ClearConditionalFormatsAsync()` method to remove conditional formatting rules from specific cells or ranges.
+
+| Parameter | Type | Description |
+| -- | -- | -- |
+| cellAddress | string (Optional) | The address of the target cell or range (e.g., `"A1:B10"`). If omitted, rules are cleared from the current selection. |
+
+**Example: Apply and Clear Conditional Formatting**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/Sample.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ private async Task ApplyHighlightRule()
+ {
+ var rule = new ConditionalFormatRule
+ {
+ ConditionalFormatType = ConditionalFormatType.GreaterThan,
+ PrimaryValue = "100",
+ Range = "A1:A10",
+ ConditionalFormatColor = ConditionalFormatColor.GreenFillWithDarkGreenText
+ };
+
+ await SpreadsheetInstance.ConditionalFormatAsync(rule);
+ }
+
+ private async Task ClearFormatting()
+ {
+ // Clear conditional formatting from the specified range
+ await SpreadsheetInstance.ClearConditionalFormatsAsync("A1:A10");
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Conditional Formatting Limitations
+
+The following operations have limitations when working with conditional formatting in the Blazor Spreadsheet component:
+
+**Conditional Formatting Constraints:**
+- **Row/Column Insertion**: Inserting rows or columns within a range containing conditional formatting may not automatically expand the formatting to include the new rows/columns
+- **Formula-Based Rules**: Formula-based conditional formatting rules are not currently supported; rules must be based on static values or built-in rule types
+- **Cut and Paste**: Conditional formatting rules applied to cells are not copied when performing cut and paste operations on those cells
+- **Custom Rule Definitions**: Creating fully custom rule types beyond the predefined rule types is not supported
+
+**General Formatting Limitations:**
+- **Custom Number Format UI**: A custom number format dialog is not available in the UI; custom format patterns must be applied programmatically using the `NumberFormatAsync()` method
+- **Border Expansion**: After inserting a row or column, borders do not automatically expand to include the newly inserted rows or columns
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/formulas.md b/Document-Processing/Excel/Spreadsheet/Blazor/formulas.md
index cef544adf..9ecab6b32 100644
--- a/Document-Processing/Excel/Spreadsheet/Blazor/formulas.md
+++ b/Document-Processing/Excel/Spreadsheet/Blazor/formulas.md
@@ -103,6 +103,77 @@ N> Deleting a Named Range used in formulas may cause formula errors. Ensure the

+## Aggregates
+
+The **Aggregates** feature provides instant statistical summaries of selected cell ranges without requiring formula creation. This functionality enables quick data analysis by automatically calculating statistics such as sum, average, count, minimum, and maximum values. Aggregate calculations appear in the footer at the bottom of the Spreadsheet component, providing at-a-glance insights into selected data.
+
+### Enabling and Disabling Aggregates
+
+The aggregate calculations display is controlled by the `ShowAggregate` property on the `SfSpreadsheet` component. By default, this property is set to **true**, enabling automatic aggregate calculations.
+
+**To disable aggregates programmatically:**
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+@code {
+ public byte[] DataSourceBytes { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/Sample.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Supported Aggregate Functions
+
+The Blazor Spreadsheet component calculates five key aggregate statistics for numeric data in selected ranges. These functions are automatically computed based on the active selection and displayed in the footer.
+
+| Aggregate Function | Description | Use Case |
+|---|---|---|
+| **Sum** | Calculates the total of all selected numeric values | Revenue totals, combined quantities, cumulative expenses |
+| **Average** | Computes the arithmetic mean of all selected numeric values | Average sales, mean performance metrics, typical values |
+| **Count** | Counts the number of cells containing numeric values in the selection | Data point validation, sample size determination, completion tracking |
+| **Min** | Identifies the smallest value in the selected range | Minimum inventory levels, lowest prices, threshold analysis |
+| **Max** | Identifies the largest value in the selected range | Peak sales, maximum capacity, outlier detection |
+
+### Viewing Aggregates
+
+Aggregate calculations are displayed automatically in the footer when a range of cells containing numeric data is selected. The footer at the bottom of the Spreadsheet component updates dynamically as selections change.
+
+**Footer Display:**
+When selecting cells A2:A10 containing numeric values, the footer displays:
+- **Sum**: Total of all values
+- **Average**: Mean of all values
+- **Count**: Number of numeric cells
+- **Min**: Smallest value
+- **Max**: Largest value
+
+N> Aggregate calculations only include numeric values. Cells containing text, logical values, or empty cells are excluded from sum and average calculations but are counted if the **Count** includes them based on their data type.
+
+### Aggregates and Selection Behavior
+
+**Multi-Range Selections:**
+When multiple non-contiguous ranges are selected, aggregates are calculated based on all selected cells combined.
+
+**Cross-Sheet References:**
+Aggregates only calculate values within the currently active worksheet. Cross-sheet selections do not contribute to aggregate calculations.
+
+**Dynamic Updates:**
+As selections are expanded, contracted, or changed, aggregate values update instantaneously to reflect the new selection.
+
+**Empty and Non-Numeric Handling:**
+Empty cells and cells containing text or formulas are excluded from Sum and Average calculations. The Count function may include or exclude these depending on the cell content type.
+
+
## Supported Formulas
The Spreadsheet component supports a wide range of built-in formulas, enabling powerful data analysis and manipulation. Below is the list of formulas supported in the Spreadsheet component:
diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/open-and-save.md b/Document-Processing/Excel/Spreadsheet/Blazor/open-and-save.md
index 7b6b329af..aa875fb2a 100644
--- a/Document-Processing/Excel/Spreadsheet/Blazor/open-and-save.md
+++ b/Document-Processing/Excel/Spreadsheet/Blazor/open-and-save.md
@@ -389,7 +389,7 @@ To load an Excel file from `Google Drive` in the Blazor Spreadsheet, follow the
- [Google Cloud project](https://developers.google.com/workspace/guides/create-project) in the Google Cloud Console.
- [Service account](https://cloud.google.com/iam/docs/service-accounts-create) within the GCP project.
- [Service account key](https://cloud.google.com/iam/docs/keys-create-delete) (JSON) available on disk.
-- [Google Drive API enabled](https://console.cloud.google.com/apis/library/drive.googleapis.com) for the project.
+- [Google Drive API enabled](https://developers.cloud.google.com/apis/library/drive.googleapis.com) for the project.
- [Google Drive account](https://drive.google.com/) with access to the file to download.
- [Google.Apis.Drive.v3](https://www.nuget.org/packages/Google.Apis.Drive.v3) NuGet package installed in your project to access Google Drive API.
@@ -512,7 +512,11 @@ To save the Spreadsheet content through the user interface, select the **File >
When a protected sheet or workbook is saved or downloaded, all associated settings - such as the protection password, unlocked cell ranges, and sheet options - are preserved in the Excel file. These settings remain active and are consistently maintained when the file is opened in other viewers like **Microsoft Excel** or **Google Sheets**, ensuring seamless protection across viewers. To know more about protection, refer [here](./protection#protect-sheet).
### Supported file formats
-The Spreadsheet component supports saving files in the Microsoft Excel (.xlsx) format.
+The Spreadsheet component supports saving files in the following formats:
+* Microsoft Excel (.xlsx)
+* Microsoft Excel 97-2003 (.xls)
+* Comma Separated Values (.csv)
+* Portable Document Format (.pdf)
### Save an Excel file programmatically
@@ -595,6 +599,151 @@ The [SaveAsStreamAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazo
{% endhighlight %}
{% endtabs %}
+### Save in different file formats
+
+The Blazor Spreadsheet component supports exporting spreadsheet data to multiple file formats, enabling flexibility in how data is shared and consumed. Each format has specific use cases and compatibility considerations, allowing developers to choose the optimal format based on downstream processing requirements or distribution needs.
+
+**Supported Save Formats:**
+
+| SaveType | File Extension | Description |
+|---|---|---|---|
+| `Xlsx` | `.xlsx` | Microsoft Excel 2007 and later format |
+| `Xls` | `.xls` | Microsoft Excel 97-2003 format |
+| `Csv` | `.csv` | Comma Separated Values format |
+| `Pdf` | `.pdf` | Portable Document Format |
+
+**Configuring File Format:**
+
+Specify the desired export format using the `SaveType` property within the [SaveOptions](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SaveOptions.html) parameter. The format determines how the spreadsheet content is transformed and exported. Optional layout settings such as page orientation and scaling can be configured for PDF exports.
+
+The following code example demonstrates saving the spreadsheet in different formats:
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+
+
+@code {
+ public byte[] DataSourceBytes { get; set; }
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/Sample.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ // Save as Excel 2007 and later format (.xlsx)
+ public async Task SaveAsXlsx()
+ {
+ await SpreadsheetInstance.SaveAsync(new SaveOptions
+ {
+ SaveType = SaveType.Xlsx,
+ FileName = "Spreadsheet"
+ });
+ }
+
+ // Save as Comma Separated Values format (.csv)
+ public async Task SaveAsCsv()
+ {
+ await SpreadsheetInstance.SaveAsync(new SaveOptions
+ {
+ SaveType = SaveType.Csv,
+ FileName = "Spreadsheet"
+ });
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Save as PDF with layout settings
+
+PDF export from the Blazor Spreadsheet component supports customization of layout and presentation through the [PdfLayoutSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.PdfLayoutSettings.html) property. These settings control how spreadsheet content is rendered on PDF pages, including page orientation, scaling behavior, and content distribution. By default, PDF documents are created in portrait orientation with standard scaling.
+
+**Available PDF Layout Settings:**
+
+| Property | Type | Default | Description |
+|---|---|---|---|
+| `Orientation` | `PdfPageOrientation` | `Portrait` | Controls page orientation: `Portrait` (8.5" × 11") or `Landscape` (11" × 8.5"). Choose Portrait for standard letter-sized documents or Landscape for wide data ranges. |
+| `FitSheetOnOnePage` | `bool` | `false` | Determines content scaling behavior: `true` scales content proportionally to fit entire sheet on single page; `false` allows content to span multiple pages using normal printing pagination. |
+
+**Layout Configuration Guide:**
+
+**Orientation Selection:**
+- **Portrait**: Default orientation, ideal for documents with standard column counts. Maximizes vertical space for data rows.
+- **Landscape**: Recommended for spreadsheets with many columns or wide data ranges. Provides additional horizontal space.
+
+**Scaling Behavior:**
+- **FitSheetOnOnePage = true**: All spreadsheet content scales to fit on a single PDF page. Useful for summaries, executive reports, or when a one-page document is required. Text and content size may reduce.
+- **FitSheetOnOnePage = false**: Content uses standard print scaling and may span multiple pages. Preserves readability and data size at the cost of multiple pages.
+
+
+The following code example demonstrates saving the spreadsheet as PDF with different layout configurations:
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+
+
+
+@code {
+ public byte[] DataSourceBytes { get; set; }
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ protected override void OnInitialized()
+ {
+ string filePath = "wwwroot/Sample.xlsx";
+ DataSourceBytes = File.ReadAllBytes(filePath);
+ }
+
+ // Save as PDF in Portrait orientation
+ public async Task SavePdfPortrait()
+ {
+ await SpreadsheetInstance.SaveAsync(new SaveOptions
+ {
+ SaveType = SaveType.Pdf,
+ FileName = "Spreadsheet",
+ PdfLayoutSettings = new PdfLayoutSettings
+ {
+ Orientation = PdfPageOrientation.Portrait,
+ FitSheetOnOnePage = false
+ }
+ });
+ }
+
+ // Save as PDF in Landscape orientation
+ public async Task SavePdfLandscape()
+ {
+ await SpreadsheetInstance.SaveAsync(new SaveOptions
+ {
+ SaveType = SaveType.Pdf,
+ FileName = "Spreadsheet",
+ PdfLayoutSettings = new PdfLayoutSettings
+ {
+ Orientation = PdfPageOrientation.Landscape,
+ FitSheetOnOnePage = false
+ }
+ });
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
## New
To create a new, blank workbook through the UI, select **File > New** from the **Ribbon**. This action initializes a blank spreadsheet component, ready for data entry or formatting. If unsaved changes are present, a confirmation dialog will appear, indicating that these changes will be lost. The dialog presents options to proceed with creating the new workbook by selecting **OK**, or to cancel the operation by selecting **Cancel**.
diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/overview.md b/Document-Processing/Excel/Spreadsheet/Blazor/overview.md
index fd0f59159..cb3fb4445 100644
--- a/Document-Processing/Excel/Spreadsheet/Blazor/overview.md
+++ b/Document-Processing/Excel/Spreadsheet/Blazor/overview.md
@@ -9,13 +9,13 @@ documentation: ug
# Overview of the Blazor Spreadsheet Control
-The Syncfusion Blazor Spreadsheet is a user-interactive component designed to organize and analyze data in a tabular format with configuration options for customization. It will load data by importing an Excel file or from local file paths and Base64 string data. The populated data can be exported as Excel files in `.xlsx` format.
+The Syncfusion Blazor Spreadsheet is a user-interactive component designed to organize and analyze data in a tabular format with configuration options for customization. It will load data by importing an Excel file or from local file paths and Base64 string data. The populated data can be exported as Excel with xlsx, xls, CSV and PDF formats.
## Key features
* [**Editing**](editing): Provides the option to dynamically edit a cell with support for direct cell editing and formula bar editing capabilities.
* [**Selection**](selection): Provides comprehensive selection options including individual cells, rows, columns, and ranges with support for both mouse and keyboard interactions.
-* [**Open and Save**](open-and-save): Provides the option to open Excel files (.xlsx and .xls formats) in Spreadsheet and save data as Excel files (.xlsx format) with support for Base64 string loading and local file operations.
+* [**Open and Save**](open-and-save): Provides the option to open Excel files (.xlsx and .xls formats) in Spreadsheet and save data as xlsx, xls, CSV, and PDF documents with support for Base64 string loading and local file operations.
* [**Clipboard**](clipboard): Provides comprehensive clipboard operations including cut, copy, and paste functionality with support for external clipboard data from applications like Excel and Google Sheets.
* [**Formulas**](formulas): Provides built-in calculation library with pre-defined formulas, named range support, and automatic/manual calculation modes.
* [**Cell formatting**](cell-range#cell-formatting): Provides extensive cell formatting options including font properties, colors, borders, alignment, and text styling to enhance data presentation.
diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/ribbon-customization.md b/Document-Processing/Excel/Spreadsheet/Blazor/ribbon-customization.md
new file mode 100644
index 000000000..598d1e47c
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/Blazor/ribbon-customization.md
@@ -0,0 +1,752 @@
+---
+layout: post
+title: Ribbon Customization in Blazor Spreadsheet Component | Syncfusion
+description: Checkout and learn here about ribbon customization in the Syncfusion Blazor Spreadsheet component and more.
+platform: document-processing
+control: Spreadsheet
+documentation: ug
+---
+
+# Ribbon Customization in Blazor Spreadsheet Component
+
+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](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_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. |
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+@code {
+
+ private List GetTabCustomizations()
+ {
+ return new List
+ {
+ // 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" }
+ };
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Customizing Built-in Ribbon Groups
+
+Built-in groups within tabs can be customized using the [RibbonGroupItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_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** |
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+@code {
+
+ private List GetGroupCustomizations()
+ {
+ return new List
+ {
+ // 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 }
+ };
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Customizing Built-in Ribbon Items
+
+Individual ribbon items can be customized using the [RibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_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** |
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+
+
+
+
+
+@code {
+
+ private List GetItemCustomizations()
+ {
+ return new List
+ {
+ // 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 }
+ };
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Adding Custom Ribbon Tabs
+
+The ribbon can be extended with completely new tabs using the [CustomRibbonTabs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_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 |
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Ribbon
+
+
+
+
+
+@code {
+
+ private List GetCustomTabs()
+ {
+ return new List
+ {
+ new SpreadsheetCustomRibbonTab
+ {
+ Index = 2, // Insert after Insert tab
+ Template = CreateCustomTabTemplate()
+ }
+ };
+ }
+
+ private RenderFragment CreateCustomTabTemplate()
+ {
+ return @
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ;
+ }
+
+ private void OnAnalyzeClick()
+ {
+ // Custom analyze logic
+ Console.WriteLine("Analyze clicked");
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Adding Custom Ribbon Groups
+
+Custom groups can be added to existing tabs using the [CustomRibbonGroups](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_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 |
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Ribbon
+
+
+
+
+
+@code {
+
+ private List GetCustomGroups()
+ {
+ return new List
+ {
+ new SpreadsheetCustomRibbonGroup
+ {
+ TabId = "homeTab",
+ Index = 8, // Insert after existing groups
+ Template = CreateCustomGroupTemplate()
+ }
+ };
+ }
+
+ private RenderFragment CreateCustomGroupTemplate()
+ {
+ return @
+
+
+
+
+
+
+
+
+
+ ;
+ }
+
+ private void OnExportPdf()
+ {
+ // Export to PDF logic
+ Console.WriteLine("Export PDF clicked");
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Adding Custom Ribbon Items
+
+Custom items can be added to existing groups using the [CustomRibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_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 |
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Ribbon
+
+
+
+
+
+@code {
+
+ private List GetCustomItems()
+ {
+ return new List
+ {
+ new SpreadsheetCustomRibbonItem
+ {
+ GroupId = "fontStyleGroup",
+ Index = 4, // Insert after existing formatting items
+ Template = CreateCustomItemTemplate()
+ }
+ };
+ }
+
+ private RenderFragment CreateCustomItemTemplate()
+ {
+ return @
+
+
+ ;
+ }
+
+ private void OnHighlightText()
+ {
+ // Highlight logic
+ Console.WriteLine("Highlight Text clicked");
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## 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](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_ShowRibbonTabs_System_Collections_Generic_List_System_String__) and [HideRibbonTabs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_HideRibbonTabs_System_Collections_Generic_List_System_String__) methods.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Buttons
+
+
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ private void HideTabs()
+ {
+ SpreadsheetInstance.HideRibbonTabs(new List { "Review", "View" });
+ }
+
+ private void ShowTabs()
+ {
+ SpreadsheetInstance.ShowRibbonTabs(new List { "Review", "View" });
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Enabling and Disabling Tabs
+
+Tab interactivity can be controlled using the [EnableRibbonTabs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_EnableRibbonTabs_System_Collections_Generic_List_System_String__) and [DisableRibbonTabs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_DisableRibbonTabs_System_Collections_Generic_List_System_String__) methods. Disabled tabs appear grayed out but remain visible.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Buttons
+
+
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ private void DisableTabs()
+ {
+ SpreadsheetInstance.DisableRibbonTabs(new List { "Home", "Review", "View" });
+ }
+
+ private void EnableTabs()
+ {
+ SpreadsheetInstance.EnableRibbonTabs(new List { "Home", "Review", "View" });
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Showing and Hiding Items
+
+Item visibility can be controlled using the [ShowRibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_ShowRibbonItems_System_Collections_Generic_List_System_String__) and [HideRibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_HideRibbonItems_System_Collections_Generic_List_System_String__) methods. Hidden items are completely removed from the ribbon interface.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Buttons
+
+
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ private void HideItems()
+ {
+ SpreadsheetInstance.HideRibbonItems(new List { "cut", "paste" });
+ }
+
+ private void ShowItems()
+ {
+ SpreadsheetInstance.ShowRibbonItems(new List { "cut", "paste" });
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Enabling and Disabling Items
+
+Item interactivity can be controlled using the [EnableRibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_EnableRibbonItems_System_Collections_Generic_List_System_String__) and [DisableRibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_DisableRibbonItems_System_Collections_Generic_List_System_String__) methods. Disabled items appear grayed out but remain visible.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Buttons
+
+
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ private void DisableItems()
+ {
+ SpreadsheetInstance.DisableRibbonItems(new List { "cut", "italic", "bold" });
+ }
+
+ private void EnableItems()
+ {
+ SpreadsheetInstance.EnableRibbonItems(new List { "cut", "italic", "bold" });
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Adding Ribbon Tabs
+
+Custom tabs can be added dynamically using the [AddRibbonTab](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_AddRibbonTab_Syncfusion_Blazor_Navigations_RibbonTab_System_Int32_) method.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Ribbon
+
+
+
+
+
+
+
+@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);
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Adding Ribbon Items
+
+Custom items can be added to existing groups using the [AddRibbonItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_AddRibbonItems_System_String_System_Collections_Generic_List_Syncfusion_Blazor_Navigations_RibbonItem__System_Int32_Syncfusion_Blazor_Navigations_RibbonGroup_) method.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Ribbon
+
+
+
+
+
+
+
+@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(this, OnCustomAction)
+ }
+ };
+
+ // Add item to a group in Home tab at index 0
+ SpreadsheetInstance.AddRibbonItems("Home", new List { item }, index: 0);
+ }
+
+ private void OnCustomAction(MouseEventArgs args)
+ {
+ Console.WriteLine("Custom button clicked");
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## 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](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Spreadsheet.SfSpreadsheet.html#Syncfusion_Blazor_Spreadsheet_SfSpreadsheet_AddFileMenuItems_System_Collections_Generic_List_Syncfusion_Blazor_Navigations_MenuItem__System_Int32_) method.
+
+{% tabs %}
+{% highlight razor tabtitle="Index.razor" %}
+
+@page "/"
+@using Syncfusion.Blazor.Spreadsheet
+@using Syncfusion.Blazor.Navigations
+@using Syncfusion.Blazor.Buttons
+
+
+
+
+
+
+
+@code {
+ public SfSpreadsheet SpreadsheetInstance { get; set; }
+
+ private void AddMenuItems()
+ {
+ var exportItems = new List