diff --git a/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-aws-s3-bucket.md b/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-aws-s3-bucket.md
new file mode 100644
index 0000000000..724e02e9b3
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-aws-s3-bucket.md
@@ -0,0 +1,176 @@
+---
+layout: post
+title: Opening excel from AWS S3 in React Spreadsheet control | Syncfusion
+description: Learn about how to Open an Excel file from AWS S3 in React Spreadsheet control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open file from AWS S3
+documentation: ug
+---
+
+# Open file from AWS S3
+
+To load a file from AWS S3 in a Spreadsheet Component, you can follow the steps below
+
+**Step 1:** Create a Simple Spreadsheet Sample in React
+
+Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/getting-started) to create a simple Spreadsheet sample in React. This will give you a basic setup of the Spreadsheet component.
+
+**Step 2:** Modify the `SpreadsheetController.cs` File in the Web Service Project
+
+1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services) for instructions on how to create a web service project.
+
+2. Open the `SpreadsheetController.cs` file in your web service project.
+
+3. Import the required namespaces at the top of the file:
+
+```csharp
+
+using Amazon;
+using Amazon.Runtime;
+using Amazon.S3;
+using Amazon.S3.Model;
+using Amazon.S3.Transfer;
+
+```
+
+4. Add the following private fields and constructor parameters to the `SpreadsheetController` class, In the constructor, assign the values from the configuration to the corresponding fields.
+
+```csharp
+
+private IConfiguration _configuration;
+public readonly string _accessKey;
+public readonly string _secretKey;
+public readonly string _bucketName;
+
+public SpreadsheetController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessKey = _configuration.GetValue("AccessKey");
+ _secretKey = _configuration.GetValue("SecretKey");
+ _bucketName = _configuration.GetValue("BucketName");
+}
+
+```
+
+5. Create the `OpenFromS3()` method to open the document from the AWS S3 bucket.
+
+```csharp
+
+[Route("api/[controller]")]
+[ApiController]
+public class SpreadsheetController : ControllerBase
+{
+ [HttpPost]
+ [Route("OpenFromS3")]
+ public async Task OpenFromS3([FromBody] FileOptions options)
+ {
+ try
+ {
+ //Set AWS region and credentials
+ var region = RegionEndpoint.USEast1;
+ var config = new AmazonS3Config { RegionEndpoint = region };
+ var credentials = new BasicAWSCredentials("your-access-key", "your-secretkey");
+ //Create an S3 client to interact with AWS
+ using (var client = new AmazonS3Client(credentials, config))
+ {
+ using (MemoryStream stream = new MemoryStream())
+ {
+ //Get the full file name using input from the client
+ string bucketName = "your-bucket-name";
+ string fileName = options.FileName + options.Extension;
+ //Download the file from S3 into memory
+ var response = await client.GetObjectAsync(new GetObjectRequest
+ {
+ BucketName = bucketName,
+ Key = fileName
+ });
+ await response.ResponseStream.CopyToAsync(stream);
+ stream.Position = 0; // Reset stream position for reading
+ //Wrap the stream as a FormFile for processing
+ OpenRequest open = new OpenRequest
+ {
+ File = new FormFile(stream, 0, stream.Length, options.FileName, fileName)
+ };
+ //Convert Excel file to JSON using Workbook.Open method.
+ var result = Workbook.Open(open);
+ //Return the JSON result to the client
+ return Content(result, "application/json");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ // Handle any errors and return a message
+ Console.WriteLine($"Error: {ex.Message}");
+ return Content("Error occurred while processing the file.");
+ }
+ }
+
+ // To receive file details from the client.
+ public class FileOptions
+ {
+ public string FileName { get; set; } = string.Empty;
+ public string Extension { get; set; } = string.Empty;
+ }
+}
+
+```
+
+6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration.
+
+```json
+
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "AccessKey": "Your Access Key from AWS S3",
+ "SecretKey": "Your Secret Key from AWS S3",
+ "BucketName": "Your Bucket name from AWS S3"
+}
+
+```
+
+N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with your actual AWS access key, secret key and bucket name.
+
+**Step 3:** Modify the index File in the Spreadsheet sample to make a fetch call to the server to retrieve and load the Excel file from the AWS S3 bucket into the client-side spreadsheet.
+
+```ts
+
+
+
+// Function to open a spreadsheet file from AWS S3 via an API call
+const openFromS3 = () => {
+ spreadsheet.showSpinner();
+ // Make a POST request to the backend API to fetch the file from S3. Replace the URL with your local or hosted endpoint URL.
+ fetch('https://localhost:portNumber/api/spreadsheet/OpenFromS3', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ FileName: fileInfo.name, // Name of the file to open
+ Extension: fileInfo.extension, // File extension
+ }),
+ })
+ .then((response) => response.json()) // Parse the response as JSON
+ .then((data) => {
+ spreadsheet.hideSpinner();
+ // Load the spreadsheet data into the UI.
+ spreadsheet.openFromJson({ file: data, triggerEvent: true });
+ })
+ .catch((error) => {
+ // Log any errors that occur during the fetch operation
+ window.alert('Error importing file:', error);
+ });
+};
+
+```
+
+N> The **AWSSDK.S3** NuGet package must be installed in your application to use the previous code example.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-azure-blob-storage.md b/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-azure-blob-storage.md
new file mode 100644
index 0000000000..cb3ce3789f
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-azure-blob-storage.md
@@ -0,0 +1,154 @@
+---
+layout: post
+title: Open excel from Azure Blob in React Spreadsheet control | Syncfusion
+description: Learn about how to Open an Excel file from Azure Blob Storage in React Spreadsheet control of Syncfusion Essential JS 2.
+platform: document-processing
+control: Open file from Azure Blob Storage
+documentation: ug
+---
+
+# Open file from Azure Blob Storage
+
+To load a file from Azure Blob Storage in a Spreadsheet Component, you can follow the steps below
+
+**Step 1:** Create a Simple Spreadsheet Sample in React
+
+Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/getting-started) to create a simple Spreadsheet sample in React. This will give you a basic setup of the Spreadsheet component.
+
+**Step 2:** Modify the `SpreadsheetController.cs` File in the Web Service Project
+
+1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services) for instructions on how to create a web service project.
+
+2. Open the `SpreadsheetController.cs` file in your web service project.
+
+3. Import the required namespaces at the top of the file:
+
+```csharp
+
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Syncfusion.EJ2.Spreadsheet;
+using Azure.Storage.Blobs;
+using Azure.Storage.Blobs.Specialized;
+
+```
+
+4. Add the following private fields and constructor parameters to the `SpreadsheetController` class, In the constructor, assign the values from the configuration to the corresponding fields.
+
+```csharp
+
+private readonly string _storageConnectionString;
+private readonly string _storageContainerName;
+
+public SpreadsheetController(IConfiguration configuration)
+{
+ // Fetch values from appsettings.json
+ _storageConnectionString = configuration.GetValue("connectionString");
+ _storageContainerName = configuration.GetValue("containerName");
+}
+
+```
+
+5. Create the `OpenFromAzure()` method to open the document from the Azure Blob Storage.
+
+```csharp
+
+[HttpPost]
+[Route("OpenFromAzure")]
+public async Task OpenFromAzure([FromBody] FileOptions options)
+{
+ if (options == null || string.IsNullOrWhiteSpace(options.FileName) || string.IsNullOrWhiteSpace(options.Extension))
+ return BadRequest("Invalid file options.");
+
+ try
+ {
+ using (MemoryStream stream = new MemoryStream())
+ {
+ string fileName = options.FileName + options.Extension;
+
+ // Connect to Azure Blob Storage
+ BlobServiceClient blobServiceClient = new BlobServiceClient(_storageConnectionString);
+ BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_storageContainerName);
+ BlockBlobClient blockBlobClient = containerClient.GetBlockBlobClient(fileName);
+
+ // Download file into memory
+ await blockBlobClient.DownloadToAsync(stream);
+ stream.Position = 0;
+
+ // Wrap stream as FormFile and convert to Spreadsheet-compatible JSON
+ OpenRequest open = new OpenRequest
+ {
+ File = new FormFile(stream, 0, stream.Length, options.FileName, fileName)
+ };
+
+ string result = Workbook.Open(open);
+ return Content(result, "application/json");
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Error: {ex.Message}");
+ return Content("Error occurred while processing the file.");
+ }
+}
+
+// DTO that receives file details from the client
+public class FileOptions
+{
+ public string FileName { get; set; } = string.Empty;
+ public string Extension { get; set; } = string.Empty;
+}
+
+```
+
+6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration.
+
+```json
+
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccount;AccountKey=yourKey;EndpointSuffix=core.windows.net",
+ "containerName": "your-container-name"
+}
+
+```
+N> Note: Install the Azure.Storage.Blobs NuGet package in the service project.
+
+**Step 3:** Modify the index File in the Spreadsheet sample to make a fetch call to the server to retrieve and load the Excel file from the Google Cloud Storage into the client-side spreadsheet.
+
+```ts
+
+;
+
+const openFromAzure = () => {
+ spreadsheet.showSpinner();
+
+ fetch("https://localhost:portNumber/api/spreadsheet/OpenFromAzure", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ FileName: fileInfo.name, // e.g., "Report"
+ Extension: fileInfo.extension // e.g., ".xlsx"
+ })
+ })
+ .then((res) => res.json())
+ .then((data) => {
+ spreadsheet.hideSpinner();
+ spreadsheet.openFromJson({ file: data, triggerEvent: true });
+ })
+ .catch((err) => window.alert("Error importing file: " + err));
+};
+
+```
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-google-cloud-storage.md b/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-google-cloud-storage.md
new file mode 100644
index 0000000000..d691482fe4
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Open-Excel-File/from-google-cloud-storage.md
@@ -0,0 +1,145 @@
+---
+layout: post
+title: Open excel from Google Cloud in React Spreadsheet control | Syncfusion
+description: Learn about how to Open an Excel file from Google Cloud Storage in React Spreadsheet control of Syncfusion Essential JS 2.
+platform: document-processing
+control: Open file from Google Cloud Storage
+documentation: ug
+---
+
+# Open file from Google Cloud Storage
+
+To load a file from Google Cloud Storage in a Spreadsheet Component, you can follow the steps below
+
+**Step 1:** Create a Simple Spreadsheet Sample in React
+
+Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/getting-started) to create a simple Spreadsheet sample in React. This will give you a basic setup of the Spreadsheet component.
+
+**Step 2:** Modify the `SpreadsheetController.cs` File in the Web Service Project
+
+1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services) for instructions on how to create a web service project.
+
+2. Open the `SpreadsheetController.cs` file in your web service project.
+
+3. Import the required namespaces at the top of the file:
+
+```csharp
+
+using Google.Apis.Auth.OAuth2;
+using Google.Cloud.Storage.V1;
+using Syncfusion.EJ2.Spreadsheet;
+
+```
+
+4. Add the following private fields and constructor parameters to the `SpreadsheetController` class, In the constructor, assign the values from the configuration to the corresponding fields.
+
+```Csharp
+
+private readonly string _bucketName;
+private readonly StorageClient _storageClient;
+
+public SpreadsheetController(IConfiguration configuration)
+{
+ // Path of the JSON key downloaded from Google Cloud
+ string keyFilePath = configuration.GetValue("GoogleKeyFilePath");
+
+ // Create StorageClient with service-account credentials
+ var credentials = GoogleCredential.FromFile(keyFilePath);
+ _storageClient = StorageClient.Create(credentials);
+
+ // Bucket that stores the Excel files
+ _bucketName = configuration.GetValue("BucketName");
+}
+
+```
+
+5. Create the `OpenFromGoogleCloud()` method to open the document from the Google Cloud Storage.
+
+```Csharp
+
+[HttpPost]
+[Route("OpenFromGoogleCloud")]
+public IActionResult OpenFromGoogleCloud([FromBody] FileOptions options)
+{
+ try
+ {
+ using MemoryStream stream = new MemoryStream();
+
+ // /
+ string fileName = options.FileName + options.Extension;
+
+ // Download the object into memory
+ _storageClient.DownloadObject(_bucketName, fileName, stream);
+ stream.Position = 0;
+
+ // Feed the stream to Syncfusion to convert it into JSON
+ OpenRequest open = new OpenRequest
+ {
+ File = new FormFile(stream, 0, stream.Length, options.FileName, fileName)
+ };
+
+ string result = Workbook.Open(open);
+ return Content(result, "application/json");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Error: {ex.Message}");
+ return Content("Error occurred while processing the file.");
+ }
+}
+
+// DTO that receives file details from the client
+public class FileOptions
+{
+ public string FileName { get; set; } = string.Empty;
+ public string Extension { get; set; } = string.Empty;
+}
+
+```
+
+6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration.
+
+```Json
+
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "GoogleKeyFilePath": "path/to/service-account-key.json",
+ "BucketName": "your-gcs-bucket-name"
+}
+
+```
+
+N> Note: Install the Google.Cloud.Storage.V1 NuGet package in the service project.
+
+**Step 3:** Modify the index File in the Spreadsheet sample to make a fetch call to the server to retrieve and load the Excel file from the Google Cloud Storage into the client-side spreadsheet.
+
+```typescript
+;
+
+const openFromGoogleCloud = () => {
+ spreadsheet.showSpinner();
+
+ fetch("https://localhost:portNumber/api/spreadsheet/OpenFromGoogleCloud", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ FileName: fileInfo.name, // e.g., "Report"
+ Extension: fileInfo.extension, // e.g., ".xlsx"
+ }),
+ })
+ .then((res) => res.json())
+ .then((data) => {
+ spreadsheet.hideSpinner();
+ spreadsheet.openFromJson({ file: data, triggerEvent: true });
+ })
+ .catch((err) => window.alert("Error importing file: " + err));
+};
+```
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-aws-s3-bucket.md b/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-aws-s3-bucket.md
new file mode 100644
index 0000000000..1cae9284b5
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-aws-s3-bucket.md
@@ -0,0 +1,159 @@
+---
+layout: post
+title: Saving excel to AWS S3 in React Spreadsheet control | Syncfusion
+description: Learn how to save a Excel file from AWS S3 in React Spreadsheet control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save file to AWS S3
+documentation: ug
+---
+
+# Save spreadsheet to AWS S3
+
+To save a file to the AWS S3, you can follow the steps below.
+
+**Step 1:** Create a Simple Spreadsheet Sample in React
+
+Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/getting-started) to create a simple Spreadsheet sample in React. This will give you a basic setup of the Spreadsheet component.
+
+**Step 2:** Modify the `SpreadsheetController.cs` File in the Web Service Project
+
+1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services) for instructions on how to create a web service project.
+
+2. Open the `SpreadsheetController.cs` file in your web service project.
+
+3. Import the required namespaces at the top of the file:
+
+```csharp
+
+using Amazon;
+using Amazon.Runtime;
+using Amazon.S3;
+using Amazon.S3.Model;
+using Amazon.S3.Transfer;
+
+```
+
+4. Add the following private fields and constructor parameters to the `SpreadsheetController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+
+private IConfiguration _configuration;
+public readonly string _accessKey;
+public readonly string _secretKey;
+public readonly string _bucketName;
+
+public SpreadsheetController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessKey = _configuration.GetValue("AccessKey");
+ _secretKey = _configuration.GetValue("SecretKey");
+ _bucketName = _configuration.GetValue("BucketName");
+}
+
+```
+
+5. Create the `SaveToS3()` method to open the document from the AWS S3 bucket
+
+```csharp
+
+[HttpPost]
+[Route("SaveToS3")]
+public async Task SaveToS3([FromForm] SaveSettings saveSettings)
+{
+ try
+ {
+ // Convert spreadsheet JSON to Excel file stream
+ Stream fileStream = Workbook.Save(saveSettings);
+ fileStream.Position = 0; // Reset stream for upload
+
+ // Set AWS region and credentials
+ var region = RegionEndpoint.USEast1;
+ var config = new AmazonS3Config { RegionEndpoint = region };
+ var credentials = new BasicAWSCredentials("your-access-key", "your-secretkey");
+
+ // Define S3 bucket and file name
+ string bucketName = "your-bucket-name";
+ string fileName = saveSettings.FileName + "." + saveSettings.SaveType.ToString().ToLower();
+
+ // Initialize S3 client
+ using (var client = new AmazonS3Client(credentials, config))
+ {
+ // Use TransferUtility to upload the file stream
+ var fileTransferUtility = new TransferUtility(client);
+ await fileTransferUtility.UploadAsync(fileStream, bucketName, fileName);
+ }
+
+ // Return success message
+ return Ok("Excel file successfully saved to AWS S3.");
+ }
+ catch (Exception ex)
+ {
+ }
+}
+
+```
+
+6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration
+
+```json
+
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "AccessKey": "Your Access Key from AWS S3",
+ "SecretKey": "Your Secret Key from AWS S3",
+ "BucketName": "Your Bucket name from AWS S3"
+}
+
+```
+
+N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with your actual AWS access key, secret key and bucket name
+
+**Step 3:** Modify the index File in the Spreadsheet sample to using [`saveAsJson`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveasjson) method to serialize the spreadsheet and send it to the back-end
+
+```js
+// Function to save the current spreadsheet to AWS S3 via an API call
+const saveToS3 = () => {
+ // Convert the current spreadsheet to JSON format
+ spreadsheet.saveAsJson().then((json) => {
+ const formData = new FormData();
+
+ // Append necessary data to the form for the API request
+ formData.append('FileName', loadedFileInfo.fileName); // Name of the file to save
+ formData.append('saveType', loadedFileInfo.saveType); // Save type
+ formData.append('JSONData', JSON.stringify(json.jsonObject.Workbook)); // Spreadsheet data
+ formData.append(
+ 'PdfLayoutSettings',
+ JSON.stringify({ FitSheetOnOnePage: false }) // PDF layout settings
+ );
+
+ // Make a POST request to the backend API to save the file to S3. Replace the URL with your local or hosted endpoint URL.
+ fetch('https://localhost:portNumber/api/spreadsheet/SaveToS3', {
+ method: 'POST',
+ body: formData,
+ })
+ .then((response) => {
+ // Check if the response is successful
+ if (!response.ok) {
+ throw new Error(
+ `Save request failed with status ${response.status}`
+ );
+ }
+ window.alert('Workbook saved successfully.');
+ })
+ .catch((error) => {
+ // Log any errors that occur during the save operation
+ window.alert('Error saving to server:', error);
+ });
+ });
+};
+```
+
+N> The **AWSSDK.S3** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-azure-blob-storage.md b/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-azure-blob-storage.md
new file mode 100644
index 0000000000..f27c3bfc72
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-azure-blob-storage.md
@@ -0,0 +1,126 @@
+---
+layout: post
+title: Save excel to Azure Blob in React Spreadsheet control | Syncfusion
+description: Learn about how to Save an Excel file from Azure Blob Storage in React Spreadsheet control of Syncfusion Essential JS 2.
+platform: document-processing
+control: Save file to Azure Blob Storage
+documentation: ug
+---
+
+# Save file to Azure Cloud Storage
+
+To save a file to Azure Blob Storage in a Spreadsheet Component, you can follow the steps below
+
+**Step 1:** Create a Simple Spreadsheet Sample in React
+
+Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/getting-started) to create a simple Spreadsheet sample in React. This will give you a basic setup of the Spreadsheet component.
+
+**Step 2:** Modify the `SpreadsheetController.cs` File in the Web Service Project
+
+1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services) for instructions on how to create a web service project.
+
+2. Open the `SpreadsheetController.cs` file in your web service project.
+
+3. Import the required namespaces at the top of the file:
+
+```csharp
+
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Syncfusion.EJ2.Spreadsheet;
+using Azure.Storage.Blobs;
+
+```
+
+4. Add the following private fields and constructor parameters to the `SpreadsheetController` class, In the constructor, assign the values from the configuration to the corresponding fields.
+
+```csharp
+
+private readonly string _storageConnectionString;
+private readonly string _storageContainerName;
+
+public SpreadsheetController(IConfiguration configuration)
+{
+ _storageConnectionString = configuration.GetValue("connectionString");
+ _storageContainerName = configuration.GetValue("containerName");
+}
+
+```
+
+5. Create the `SaveToAzure()` method to save the document to the Azure Blob storage.
+
+```csharp
+
+[HttpPost]
+[Route("SaveToAzure")]
+public async Task SaveToAzure([FromForm] SaveSettings saveSettings)
+{
+ if (saveSettings == null || string.IsNullOrWhiteSpace(saveSettings.FileName))
+ return BadRequest("Invalid save settings.");
+
+ try
+ {
+ // Convert spreadsheet JSON to Excel/PDF/CSV stream
+ Stream fileStream = Workbook.Save(saveSettings);
+ fileStream.Position = 0;
+
+ // Define Azure Blob Storage client
+ BlobServiceClient blobServiceClient = new BlobServiceClient(_storageConnectionString);
+ BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_storageContainerName);
+
+ // Define blob name using file name and save type
+ string blobName = $"{saveSettings.FileName}.{saveSettings.SaveType.ToString().ToLower()}";
+ BlobClient blobClient = containerClient.GetBlobClient(blobName);
+
+ // Upload the Excel file stream to Azure Blob Storage (overwrite if exists)
+ await blobClient.UploadAsync(fileStream, overwrite: true);
+
+ return Ok("Excel file successfully saved to Azure Blob Storage.");
+ }
+ catch (Exception ex)
+ {
+ return BadRequest("Error saving file to Azure Blob Storage: " + ex.Message);
+ }
+}
+
+```
+
+N> Note: Install the Azure.Storage.Blobs NuGet package in the service project. Ensure the configured connection string has permissions to read and write blobs in the specified container.
+
+**Step 3:** Modify the index File in the Spreadsheet sample to using [`saveAsJson`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveasjson) method to serialize the spreadsheet and send it to the back-end
+
+```js
+
+;
+
+const saveToAzure = () => {
+ spreadsheet.saveAsJson().then((json) => {
+ const formData = new FormData();
+ formData.append("FileName", loadedFileInfo.fileName); // e.g., "Report"
+ formData.append("saveType", loadedFileInfo.saveType); // e.g., "Xlsx"
+ formData.append("JSONData", JSON.stringify(json.jsonObject.Workbook));
+ formData.append(
+ "PdfLayoutSettings",
+ JSON.stringify({ FitSheetOnOnePage: false })
+ );
+
+ fetch("https://localhost:portNumber/api/spreadsheet/SaveToAzure", {
+ method: "POST",
+ body: formData
+ })
+ .then((res) => {
+ if (!res.ok) {
+ throw new Error(`Save failed with status ${res.status}`);
+ }
+ window.alert("Workbook saved successfully to Azure Blob Storage.");
+ })
+ .catch((err) => window.alert("Error saving to server: " + err));
+ });
+};
+
+```
diff --git a/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-google-cloud-storage.md b/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-google-cloud-storage.md
new file mode 100644
index 0000000000..d92d4dbf3a
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Save-Excel-File/to-google-cloud-storage.md
@@ -0,0 +1,114 @@
+---
+layout: post
+title: Save excel to Google Cloud in React Spreadsheet control | Syncfusion
+description: Learn about how to Save an Excel file from Google Cloud Storage in React Spreadsheet control of Syncfusion Essential JS 2.
+platform: document-processing
+control: Save file to Google Cloud Storage
+documentation: ug
+---
+
+# Save file to Google Cloud Storage
+
+To save a file to Google Cloud Storage in a Spreadsheet Component, you can follow the steps below
+
+**Step 1:** Create a Simple Spreadsheet Sample in React
+
+Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/getting-started) to create a simple Spreadsheet sample in React. This will give you a basic setup of the Spreadsheet component.
+
+**Step 2:** Modify the `SpreadsheetController.cs` File in the Web Service Project
+
+1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services) for instructions on how to create a web service project.
+
+2. Open the `SpreadsheetController.cs` file in your web service project.
+
+3. Import the required namespaces at the top of the file:
+
+```csharp
+
+using Google.Apis.Auth.OAuth2;
+using Google.Cloud.Storage.V1;
+using Syncfusion.EJ2.Spreadsheet;
+
+```
+
+4. Add the following private fields and constructor parameters to the `SpreadsheetController` class, In the constructor, assign the values from the configuration to the corresponding fields.
+
+```csharp
+private readonly string _bucketName;
+private readonly StorageClient _storageClient;
+
+public SpreadsheetController(IConfiguration configuration)
+{
+ // Path of the JSON key downloaded from Google Cloud
+ string keyFilePath = configuration.GetValue("GoogleKeyFilePath");
+
+ // Create StorageClient with service-account credentials
+ var credentials = GoogleCredential.FromFile(keyFilePath);
+ _storageClient = StorageClient.Create(credentials);
+
+ // Bucket that stores the Excel files
+ _bucketName = configuration.GetValue("BucketName");
+}
+```
+
+5. Create the `SaveToGoogleCloud()` method to save the document to the Google Cloud storage.
+
+```csharp
+[HttpPost]
+[Route("SaveToGoogleCloud")]
+public async Task SaveToGoogleCloud([FromForm] SaveSettings saveSettings)
+{
+ try
+ {
+ // Convert spreadsheet JSON to Excel stream
+ Stream fileStream = Workbook.Save(saveSettings);
+ fileStream.Position = 0;
+
+ // File name inside the bucket
+ string fileName = $"{saveSettings.FileName}.{saveSettings.SaveType.ToString().ToLower()}";
+
+ // Upload the stream to Google Cloud Storage
+ await _storageClient.UploadObjectAsync(_bucketName, fileName, null, fileStream);
+
+ return Ok("Excel file successfully saved to Google Cloud Storage.");
+ }
+ catch (Exception ex)
+ {
+ return BadRequest("Error saving file to Google Cloud Storage: " + ex.Message);
+ }
+}
+```
+
+**Step 3:** Modify the index File in the Spreadsheet sample to using [`saveAsJson`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveasjson) method to serialize the spreadsheet and send it to the back-end
+
+```js
+
+const saveToGoogleCloud = () => {
+ spreadsheet.saveAsJson().then(json => {
+ const formData = new FormData();
+ formData.append('FileName', loadedFileInfo.fileName); // e.g., "Report"
+ formData.append('saveType', loadedFileInfo.saveType); // e.g., "Xlsx"
+ formData.append('JSONData', JSON.stringify(json.jsonObject.Workbook));
+ formData.append(
+ 'PdfLayoutSettings',
+ JSON.stringify({ FitSheetOnOnePage: false })
+ );
+
+ fetch('https://localhost:portNumber/api/spreadsheet/SaveToGoogleCloud', {
+ method: 'POST',
+ body: formData
+ })
+ .then(res => {
+ if (!res.ok) {
+ throw new Error(`Save failed with status ${res.status}`);
+ }
+ window.alert('Workbook saved successfully to Google Cloud Storage.');
+ })
+ .catch(err => window.alert('Error saving to server: ' + err));
+ });
+};
+```
+
+N> Note: The back-end requires the Google.Cloud.Storage.V1 NuGet package and a service-account key that has Storage Object Admin (or equivalent) permissions on the target bucket.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/deploy-spreadsheet-docker-to-azure-using-azure-cli.md b/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/deploy-spreadsheet-docker-to-azure-using-azure-cli.md
new file mode 100644
index 0000000000..1ca888caed
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/deploy-spreadsheet-docker-to-azure-using-azure-cli.md
@@ -0,0 +1,91 @@
+---
+layout: post
+title: Deploy Spreadsheet Server to Azure App Service using CLI | Syncfusion
+description: Learn how to deploy the Syncfusion Spreadsheet Server Docker image to Azure App Service using Azure CLI.
+control: How to deploy Spreadsheet Server Docker Image to Azure App Service using Azure CLI
+platform: document-processing
+documentation: ug
+---
+
+# Deploy Spreadsheet Docker to Azure App Service using Azure CLI
+
+## Prerequisites
+
+* `Docker` installed on your machine (Windows, macOS, or Linux).
+* `Azure CLI` installed based on your operating system. [Download Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
+* An active [`Azure subscription`](https://azure.microsoft.com/en-gb) with App Services access.
+* The [`Spreadsheet Server Docker image`](https://hub.docker.com/r/syncfusion/spreadsheet-server) available.
+
+## Deploy to Azure App Service using Azure CLI
+
+**Step 1:** Log in to Azure
+
+Open your terminal and sign in to Azure using the command below. This authenticates your CLI with Azure.
+
+```bash
+az login
+```
+
+**Step 2:** Create a resource group
+
+Create a resource group with the following command in your preferred location.
+
+```bash
+az group create --name < your-app-name> --location
+```
+
+**Step 3:** Create an app service plan
+
+Create a resource group with the following command in your preferred location.
+
+```bash
+az appservice plan create --name --resource-group < your-resource-group> --sku S1 --is-linux
+```
+
+This creates an App Service plan in the standard pricing tier (S1) and ensures it runs on Linux containers with the --is-linux flag.
+
+**Step 4:** Create the docker-compose.yml file
+
+Define your container configuration in a docker-compose.yml file. This file specifies the container name, image, and environment variables for the Spreadsheet Server:
+
+```bash
+version: '3.4'
+
+services:
+ spreadsheet-server:
+ image: syncfusion/spreadsheet-server
+ environment:
+
+ # Provide your license key for activation
+ SYNCFUSION_LICENSE_KEY: YOUR_LICENSE_KEY
+ ports:
+ - "6002:8080"
+
+```
+
+Note: Replace YOUR_LICENSE_KEY with your valid Syncfusion license key.
+
+**Step 5:** Create a Docker compose app
+
+Deploy the containerized app to Azure App Service using the following command.
+
+```bash
+az webapp create --resource-group --plan < your-app-service-plan> --name --multicontainer-config-type compose --multicontainer-config-file docker-compose.yml
+```
+
+This command creates a web app that runs your Spreadsheet Server Docker container using the configuration defined in the docker-compose.yml file.
+
+**Step 6:** Browse your app
+
+Once deployed, your app will be live at https://XXXXXXXXXX.azurewebsites.net.
+
+
+
+**Step 7:** With your server running, verify that it supports import and export operations by testing the following endpoints:
+```
+openUrl="https://XXXXXXXXXX.azurewebsites.net/api/spreadsheet/open"
+saveUrl="https://XXXXXXXXXX.azurewebsites.net/api/spreadsheet/save
+```
+Append the App Service running URL to the service URL in the client‑side Spreadsheet Editor component. For more information about how to get started with the Spreadsheet Editor component, refer to this [`getting started page`](../getting-started.md)
+
+For more information about the app container service, please look deeper into the [`Microsoft Azure App Service`](https://docs.microsoft.com/en-us/visualstudio/deployment/) for a production-ready setup.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/publish-spreadsheet-server-to-azure-using-visual-studio.md b/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/publish-spreadsheet-server-to-azure-using-visual-studio.md
new file mode 100644
index 0000000000..1c50b61223
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/publish-spreadsheet-server-to-azure-using-visual-studio.md
@@ -0,0 +1,57 @@
+---
+layout: post
+title: Deploy Spreadsheet Server to Azure App Service via VS | Syncfusion
+description: Learn how to publish the Syncfusion Spreadsheet Server Web API to Azure App Service using Visual Studio.
+control: How to publish Spreadsheet Server in Azure App Service using Visual Studio
+platform: document-processing
+documentation: ug
+---
+
+# Publish Spreadsheet Server to Azure App Service using Visual Studio
+
+
+## Prerequisites
+
+* `Visual Studio 2022` or later is installed.
+* [`.NET 8.0 SDK`](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) or later installed.
+* An active [`Azure subscription`](https://azure.microsoft.com/en-gb) with App Services access.
+* The [`Spreadsheet Web API project`](https://github.com/SyncfusionExamples/EJ2-Spreadsheet-WebServices/tree/main/WebAPI) repository cloned locally.
+
+Make sure you build the project using the Build > Build Solution menu command before following the deployment steps.
+
+## Publish to Azure App Service
+
+**Step 1:** In Solution Explorer, right-click the project and click Publish (or use the Build > Publish menu item).
+
+
+
+**Step 2:** In the Pick a publish target dialog box, select Azure as deployment target.
+
+
+
+**Step 3:** After selecting Azure, choose Azure App Service under the target options.
+
+
+
+**Step 4:** Select Publish. The Create App Service dialog box appears. Sign in with your Azure account, if necessary, and then the default app service settings populate the fields.
+
+
+
+**Step 5:** Select Create. Visual Studio deploys the app to your Azure App Service, and the web app loads in your browser with the app name at,
+```
+http://.azurewebsites.net
+```
+
+
+
+**Step 6:** Once the deployment process is complete, The deployed API will be live at the following URL:
+https://XXXXXXXXXX.azurewebsites.net
+
+**Step 7:** With your server running, verify that it supports import and export operations by testing the following endpoints:
+```
+openUrl="https://XXXXXXXXXX.azurewebsites.net/api/spreadsheet/open"
+saveUrl="https://XXXXXXXXXX.azurewebsites.net/api/spreadsheet/save
+```
+Append the App Service running URL to the service URL in the client‑side Spreadsheet Editor component. For more information about how to get started with the Spreadsheet Editor component, refer to this [`getting started page`](../getting-started.md)
+
+For more information about the app container service, please look deeper into the [`Microsoft Azure App Service`](https://docs.microsoft.com/en-us/visualstudio/deployment/) for a production-ready setup.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/docker-deployment.md b/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/spreadsheet-server-docker-image-overview.md
similarity index 99%
rename from Document-Processing/Excel/Spreadsheet/React/docker-deployment.md
rename to Document-Processing/Excel/Spreadsheet/React/Server-Deployment/spreadsheet-server-docker-image-overview.md
index c01484870d..c96b8dc0a3 100644
--- a/Document-Processing/Excel/Spreadsheet/React/docker-deployment.md
+++ b/Document-Processing/Excel/Spreadsheet/React/Server-Deployment/spreadsheet-server-docker-image-overview.md
@@ -7,7 +7,7 @@ control: Docker deployment
documentation: ug
---
-# Docker Image Overview in React Spreadsheet component
+# Docker Image Overview in React Spreadsheet
The [**Syncfusion® Spreadsheet (also known as Excel Viewer)**](https://www.syncfusion.com/spreadsheet-editor-sdk/react-spreadsheet-editor) is a feature-rich control for organizing and analyzing data in a tabular format. It provides all the common Excel features, including data binding, selection, editing, formatting, resizing, sorting, filtering, importing, and exporting Excel documents.
diff --git a/Document-Processing/Excel/Spreadsheet/React/data-validation.md b/Document-Processing/Excel/Spreadsheet/React/data-validation.md
new file mode 100644
index 0000000000..ef58cc13cd
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/data-validation.md
@@ -0,0 +1,106 @@
+---
+layout: post
+title: Data validation in EJ2 React Spreadsheet control | Syncfusion
+description: Learn here all about Data validation in Syncfusion EJ2 React Spreadsheet control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Data validation
+documentation: ug
+---
+
+# Data validation in EJ2 React Spreadsheet control
+
+
+Data Validation is used to restrict the user from entering the invalid data. You can use the [`allowDataValidation`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#allowdatavalidation) property to enable or disable data validation.
+
+> * The default value for `allowDataValidation` property is `true`.
+
+## Apply Validation
+
+You can apply data validation to restrict the type of data or the values that users enter into a cell.
+
+You can apply data validation by using one of the following ways,
+
+* Select the Data tab in the Ribbon toolbar, and then choose the Data Validation item.
+* Use the [`addDataValidation()`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#adddatavalidation) method programmatically.
+
+## Clear Validation
+
+Clear validation feature is used to remove data validations from the specified ranges or the whole worksheet.
+
+You can clear data validation rule by one of the following ways,
+
+* Select the Data tab in the Ribbon toolbar, and then choose the Clear Validation item.
+* Use the [`removeDataValidation()`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#removedatavalidation) method programmatically.
+
+## Highlight Invalid Data
+
+Highlight invalid data feature is used to highlight the previously entered invalid values.
+
+You can highlight an invalid data by using one of the following ways,
+
+* Select the Data tab in the Ribbon toolbar, and then choose the Highlight Invalid Data item.
+* Use the [`addInvalidHighlight()`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#addinvalidhighlight) method programmatically.
+
+## Clear Highlighted Invalid Data
+
+Clear highlight feature is used to remove the highlight from invalid cells.
+
+You can clear the highlighted invalid data by using the following ways,
+
+* Select the Data tab in the Ribbon toolbar, and then choose the Clear Highlight item.
+* Use the [`removeInvalidHighlight()`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#removeinvalidhighlight) method programmatically.
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/data-validation-cs1/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/data-validation-cs1/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+ {% previewsample "/document-processing/code-snippet/spreadsheet/react/data-validation-cs1" %}
+
+## Custom Data validation
+
+The Spreadsheet supports custom data validation, allowing users to define their own validation rules for specific cells or ranges. This feature enables you to set conditions that the entered data must meet, making it particularly useful when predefined validation options, such as numbers, dates, or lists, are insufficient.
+
+With custom validation, you can enforce rules using logical expressions or formulas, ensuring that only valid data is entered into the Spreadsheet.
+
+For example, consider a scenario where you want to ensure that a cell contains a number between 10 and 100. To achieve this, define a validation rule using a formula that checks if the entered value is greater than 10 and less than 100. The formula for this validation is =AND(A1>10, A1<100), where A1 refers to the cell being validated.
+
+When this rule is applied, the Spreadsheet evaluates the entered value against the formula. If a user enters a value outside the specified range, an alert notifies them of the invalid input. This helps users correct errors efficiently and ensures that only desired values are accepted.
+
+You can apply custom data validation using two methods.
+
+* The first is through the Data Validation dialog in the Ribbon toolbar. Navigate to the Data tab, select the Data Validation option, and choose the Custom type from the Allow dropdown menu.
+* The second method is programmatically, using the [`addDataValidation()`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#adddatavalidation) method, which allows developers to set custom rules dynamically via code.
+
+The following code example demonstrates how to add custom data validation with a formula in a Spreadsheet.
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/data-validation-cs2/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/data-validation-cs2/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+ {% previewsample "/document-processing/code-snippet/spreadsheet/react/data-validation-cs2" %}
+
+## Limitations of Data validation
+
+The following features have some limitations in Data Validation:
+
+* Entire row data validation.
+* Insert row between the data validation.
+* Copy/paste with data validation.
+* Delete cells between data validation applied range.
+
+## See Also
+
+* [Formatting](./formatting)
+* [Rows and columns](./rows-and-columns)
+* [Hyperlink](./link)
+* [Sorting](./sort)
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/azure-cli.png b/Document-Processing/Excel/Spreadsheet/React/images/azure-cli.png
new file mode 100644
index 0000000000..3ab35434c6
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/azure-cli.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/azure_app_service.png b/Document-Processing/Excel/Spreadsheet/React/images/azure_app_service.png
new file mode 100644
index 0000000000..13f7809126
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/azure_app_service.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/azure_credentials.png b/Document-Processing/Excel/Spreadsheet/React/images/azure_credentials.png
new file mode 100644
index 0000000000..7a4d584ed0
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/azure_credentials.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/azure_publish.png b/Document-Processing/Excel/Spreadsheet/React/images/azure_publish.png
new file mode 100644
index 0000000000..fd6cf78c9c
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/azure_publish.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/azure_published_window.png b/Document-Processing/Excel/Spreadsheet/React/images/azure_published_window.png
new file mode 100644
index 0000000000..966c3cfc26
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/azure_published_window.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/azure_target.png b/Document-Processing/Excel/Spreadsheet/React/images/azure_target.png
new file mode 100644
index 0000000000..0b0692036e
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/azure_target.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md b/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md
new file mode 100644
index 0000000000..80c32cff3e
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md
@@ -0,0 +1,555 @@
+---
+layout: post
+title: Open Excel in React Spreadsheet component | Syncfusion
+description: Learn here all about Open Excel in Syncfusion React Spreadsheet component of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Open
+documentation: ug
+---
+
+# Open Excel Files in Syncfusion React Spreadsheet
+
+The React Spreadsheet component uses a server‑assisted workflow to import Excel files accurately and efficiently. When a user uploads an Excel file, the component sends the file to the server for parsing, ensuring smooth performance because the heavy processing workload is handled on the server side.
+
+On the server, the [`Syncfusion.EJ2.Spreadsheet library`](https://www.nuget.org/packages/Syncfusion.EJ2.Spreadsheet.AspNet.Core) built on top of [`Syncfusion XlsIO`](https://help.syncfusion.com/document-processing/excel/excel-library/net/overview), reads the Excel file and extracts all relevant details, including data, styles, formulas, formatting, and sheet structure. The server then converts this information into a Spreadsheet‑compatible JSON workbook.
+
+Once processing is complete, the JSON workbook is returned to the client, where the React Spreadsheet component renders it in the browser. This workflow preserves the original Excel layout and ensures the imported content appears with full fidelity.
+
+To enable opening Excel files, set the [`allowOpen`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#allowopen) property to **true** and specify the service url using the [`openUrl`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#openurl) property. The control will send the uploaded file to this endpoint, where it is processed and returned as JSON for the Spreadsheet to render.
+
+For a quick walkthrough on how the open functionality works, refer to the following video:
+{% youtube "https://www.youtube.com/watch?v=MpwiXmL1Z_o" %}
+
+## UI options to open Excel files
+
+In user interface you can open an Excel document by clicking `File > Open` menu item in ribbon.
+
+The following sample shows the `Open` option by using the [`openUrl`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#openurl) property in the Spreadsheet control. You can also use the [`beforeOpen`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforeopen) event to customize or cancel the import action, which gets triggered before opening an Excel file.
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/open-save-cs1/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/open-save-cs1/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "/document-processing/code-snippet/spreadsheet/react/open-save-cs1" %}
+
+Please find the below table for the [beforeOpen](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforeopen) event arguments.
+
+## BeforeOpenEventArgs – Properties
+
+| **Property** | **Type** | **Description** |
+|-------------------|-------------------------------|-------------|
+| **cancel** | `boolean` | Specifies whether the open action should be canceled. |
+| **file** | `FileList` \| `string` \| `File` | Specifies the file to be opened. |
+| **parseOptions** | [`WorkbookParseOptions`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/workbookparseoptions) | Specifies the parsing options that control how the Excel file is interpreted during loading. |
+| **password** | `string` | Specifies the password required to open the Excel file, if it is protected. |
+| **requestData** | object | Specifies any additional data sent along with the open request. |
+| **requestType** | `string` | Specifies the type of open request that triggered the **beforeOpen** event. Possible values: