diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html
index 8125cf72e..04edafd2d 100644
--- a/Document-Processing-toc.html
+++ b/Document-Processing-toc.html
@@ -5909,6 +5909,9 @@
How to apply number formatting to an entire column in Excel?
+
+ How to assign data to multiple rows and columns in parallel without exceptions?
+
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-assign-data-to-multiple-rows-and-columns-parallelly.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-assign-data-to-multiple-rows-and-columns-parallelly.md
new file mode 100644
index 000000000..c784c51d1
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-assign-data-to-multiple-rows-and-columns-parallelly.md
@@ -0,0 +1,117 @@
+---
+title: Write Data to Multiple Cells in Parallel Without Errors | Syncfusion
+description: Learn to populate multiple rows and columns concurrently in Excel by using Syncfusion .NET XlsIO with proper locking to avoid duplicate-value exceptions. .
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# Write Data to Multiple Cells in Parallel Without Errors?
+
+When values are written to a worksheet range, XlsIO stores the data in an internal collection. If a Parallel.For loop writes to the same range simultaneously, the same value can be added twice, causing an exception.
+The solution is to wrap each write operation in a lock/SyncLock, ensuring that only one thread updates the collection at a time.
+
+The following examples in C# (cross-platform and Windows-specific) and VB.NET illustrate how to write data to multiple rows and columns safely in parallel.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/XlsIO-Examples/master/FAQ/Parallel%20Write/.NET/Parallel%20Write/Parallel%20Write/Program.cs,180" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Create(1);
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ object m_lock = new object();
+ int numberOfRows = 10;
+ Parallel.For(1, numberOfRows, i =>
+ {
+ var rand = new Random();
+ lock (m_lock)
+ {
+ worksheet.Range[i, 1].Value2 = string.Format("R{0}T{1}", i, rand.Next(10));
+ worksheet.Range[i, 2].Value2 = string.Format("R{0}T{1}", i, rand.Next(10));
+ worksheet.Range[i, 3].Value2 = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
+ worksheet.Range[i, 4].Value2 = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
+ worksheet.Range[i, 5].Value2 = rand.Next(2000);
+ worksheet.Range[i, 6].Value2 = rand.Next(4000);
+ worksheet.Range[i, 7].Value2 = rand.NextDouble() * 10000.0;
+ worksheet.Range[i, 8].Value2 = rand.NextDouble() * 10000.0;
+ }
+ });
+
+ #region Save
+ //Saving the workbook
+ workbook.SaveAs("../../../Output/Output.xlsx");
+ #endregion
+}
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Create(1);
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ object m_lock = new object();
+ int numberOfRows = 10;
+ Parallel.For(1, numberOfRows, i =>
+ {
+ var rand = new Random();
+ lock (m_lock)
+ {
+ worksheet.Range[i, 1].Value2 = string.Format("R{0}T{1}", i, rand.Next(10));
+ worksheet.Range[i, 2].Value2 = string.Format("R{0}T{1}", i, rand.Next(10));
+ worksheet.Range[i, 3].Value2 = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
+ worksheet.Range[i, 4].Value2 = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
+ worksheet.Range[i, 5].Value2 = rand.Next(2000);
+ worksheet.Range[i, 6].Value2 = rand.Next(4000);
+ worksheet.Range[i, 7].Value2 = rand.NextDouble() * 10000.0;
+ worksheet.Range[i, 8].Value2 = rand.NextDouble() * 10000.0;
+ }
+ });
+
+ #region Save
+ //Saving the workbook
+ workbook.SaveAs("../../Output/Output.xlsx");
+ #endregion
+}
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+ Using excelEngine As New ExcelEngine()
+
+ Dim application As IApplication = excelEngine.Excel
+ application.DefaultVersion = ExcelVersion.Xlsx
+
+ Dim workbook As IWorkbook = application.Workbooks.Create(1)
+ Dim worksheet As IWorksheet = workbook.Worksheets(0)
+
+ Dim m_lock As New Object()
+ Dim numberOfRows As Integer = 10
+
+ Parallel.For(1, numberOfRows, Sub(i)
+ Dim rand As New Random()
+
+ SyncLock m_lock
+ worksheet.Range(i, 1).Value2 = $"R{i}T{rand.Next(10)}"
+ worksheet.Range(i, 2).Value2 = $"R{i}T{rand.Next(10)}"
+ worksheet.Range(i, 3).Value2 = DateTime.Now.AddDays(rand.NextDouble() * 10.0)
+ worksheet.Range(i, 4).Value2 = DateTime.Now.AddDays(rand.NextDouble() * 10.0)
+ worksheet.Range(i, 5).Value2 = rand.Next(2000)
+ worksheet.Range(i, 6).Value2 = rand.Next(4000)
+ worksheet.Range(i, 7).Value2 = rand.NextDouble() * 10000.0
+ worksheet.Range(i, 8).Value2 = rand.NextDouble() * 10000.0
+ End SyncLock
+ End Sub)
+
+ 'Save the workbook
+ workbook.SaveAs("../../Output/Output.xlsx")
+
+ End Using
+{% endhighlight %}
+{% endtabs %}
+
+A complete working example of assigning data to multiple rows and columns in parallel using C# is available on this GitHub page.
\ No newline at end of file