From cc222cd68ef709edd87fb770b305c645a8fc2c5f Mon Sep 17 00:00:00 2001 From: VinothSF5015 Date: Tue, 14 Apr 2026 00:31:26 +0530 Subject: [PATCH 001/337] 1007137 - Content Added --- Document-Processing-toc.html | 3 + ...t-invert-if-negative-option-for-a-chart.md | 76 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html index e98d61bfb1..e2fbe052ac 100644 --- a/Document-Processing-toc.html +++ b/Document-Processing-toc.html @@ -6641,6 +6641,9 @@
  • How to retrieve the name of the chart in an Excel worksheet?
  • +
  • + How to set invert if negative option for a chart using XLsIO? +
  • diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md new file mode 100644 index 0000000000..e9aeb88538 --- /dev/null +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md @@ -0,0 +1,76 @@ +--- +title: Setting Invert If negative option in Chart properties using Syncfusion XLsIO | Syncfusion +description: This page tells how to set invert if negative option for a chart. +platform: document-processing +control: XlsIO +documentation: UG +--- + +# How to set invert if negative option for a chart using XLsIO? + +This following code samples demonstrate how to set invert if negative option for a chart using C# (Cross-platform and Windows-specific) and VB.NET. + +{% tabs %} +{% highlight c# tabtitle="C# [Cross-platform]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + #region Workbook Initialization + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + IWorkbook workbook = application.Workbooks.Open(Path.GetFullPath(@"Data/InputTemplate.xlsx")); + IWorksheet worksheet = workbook.Worksheets[0]; + #endregion + + IChart chart = worksheet.Charts[0]; + + //Used to invert series color if the value is negative + (chart.Series[0] as ChartSerieImpl).InvertIfNegative = true; + + #region Save + //Saving the workbook + workbook.SaveAs(Path.GetFullPath("Output/Output.xlsx")); + #endregion +} +{% endhighlight %} + +{% highlight c# tabtitle="C# [Windows-specific]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + #region Workbook Initialization + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + IWorkbook workbook = application.Workbooks.Open("InputTemplate.xlsx"); + IWorksheet worksheet = workbook.Worksheets[0]; + #endregion + + IChart chart = worksheet.Charts[0]; + + //Used to invert series color if the value is negative + (chart.Series[0] as ChartSerieImpl).InvertIfNegative = true; + + #region Save + //Saving the workbook + workbook.SaveAs("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.Open("InputTemplate.xlsx") + Dim worksheet As IWorksheet = workbook.Worksheets(0) + + Dim chart As IChart = worksheet.Charts(0) + + 'Used to invert series color if the value is negative + DirectCast(chart.Series(0), ChartSerieImpl).InvertIfNegative = True + + 'Saving the workbook + workbook.SaveAs("Output.xlsx") +End Using +{% endhighlight %} +{% endtabs %} + +A complete working example in C# is present on this GitHub page. \ No newline at end of file From 5e66075bc2bf509b7ac1662a0c52e7cf900d816e Mon Sep 17 00:00:00 2001 From: VinothSF5015 Date: Tue, 14 Apr 2026 10:32:38 +0530 Subject: [PATCH 002/337] Update how-to-set-invert-if-negative-option-for-a-chart.md --- .../how-to-set-invert-if-negative-option-for-a-chart.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md index e9aeb88538..5d8a2c9293 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md @@ -1,6 +1,6 @@ --- -title: Setting Invert If negative option in Chart properties using Syncfusion XLsIO | Syncfusion -description: This page tells how to set invert if negative option for a chart. +title: Setting Invert If negative option in Chart properties | Syncfusion +description: This page tells how to set invert if negative option for a chart using Syncfusion XlsIO in C# (Cross-platform and Windows-specific) and VB.NET. platform: document-processing control: XlsIO documentation: UG @@ -73,4 +73,4 @@ End Using {% endhighlight %} {% endtabs %} -A complete working example in C# is present on this GitHub page. \ No newline at end of file +A complete working example in C# is present on this GitHub page. From 5cf9389da91ad87d0d4a42dab2d17e1822308aef Mon Sep 17 00:00:00 2001 From: VinothSF5015 Date: Tue, 14 Apr 2026 11:17:36 +0530 Subject: [PATCH 003/337] Update how-to-set-invert-if-negative-option-for-a-chart.md --- .../faqs/how-to-set-invert-if-negative-option-for-a-chart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md index 5d8a2c9293..c706c3b630 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md @@ -6,7 +6,7 @@ control: XlsIO documentation: UG --- -# How to set invert if negative option for a chart using XLsIO? +# How to set invert if negative option for a chart using XlsIO? This following code samples demonstrate how to set invert if negative option for a chart using C# (Cross-platform and Windows-specific) and VB.NET. From 86937eca9c75a50e4a82e1637846ad92a9d73d40 Mon Sep 17 00:00:00 2001 From: VinothSF5015 Date: Mon, 20 Apr 2026 18:47:14 +0530 Subject: [PATCH 004/337] Content added --- ...t-invert-if-negative-option-for-a-chart.md | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md index c706c3b630..e4c79e30ef 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md @@ -8,7 +8,8 @@ documentation: UG # How to set invert if negative option for a chart using XlsIO? -This following code samples demonstrate how to set invert if negative option for a chart using C# (Cross-platform and Windows-specific) and VB.NET. + +The following code samples demonstrate how to set the "Invert if negative" option for a chart using C# (Cross-platform and Windows-specific) and VB.NET for XLSX files. For XLS (binary) file format, see the section below. {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" %} @@ -74,3 +75,66 @@ End Using {% endtabs %} A complete working example in C# is present on this GitHub page. + +# How to set invert if negative option for a chart in XLS (binary) file format? + +In case of binary file format (XLS), kindly use the following code snippet. + +{% tabs %} +{% highlight c# tabtitle="C# [Cross-platform]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Excel97to2003; + IWorkbook workbook = application.Workbooks.Open("InputTemplate.xls"); + IWorksheet worksheet = workbook.Worksheets[0]; + + IChart chart = worksheet.Charts[0]; + + // Used to invert series color if the value is negative in XLS (binary) format + chart.Series[0].SerieFormat.Interior.SwapColorsOnNegative = true; + + // Saving the workbook + workbook.SaveAs("Output.xls"); +} +{% endhighlight %} + +{% highlight c# tabtitle="C# [Windows-specific]" %} +using (ExcelEngine excelEngine = new ExcelEngine()) +{ + #region Workbook Initialization + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + IWorkbook workbook = application.Workbooks.Open("InputTemplatexlsx.xls"); + IWorksheet worksheet = workbook.Worksheets[0]; + #endregion + + IChart chart = worksheet.Charts[0]; + + // Used to invert series color if the value is negative in XLS (binary) format + chart.Series[0].SerieFormat.Interior.SwapColorsOnNegative = true; + + #region Save + //Saving the workbook + workbook.SaveAs("Output.xls"); + #endregion +} +{% endhighlight %} + +{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %} +Using excelEngine As New ExcelEngine() + Dim application As IApplication = excelEngine.Excel + application.DefaultVersion = ExcelVersion.Excel97to2003 + Dim workbook As IWorkbook = application.Workbooks.Open("InputTemplate.xls") + Dim worksheet As IWorksheet = workbook.Worksheets(0) + + Dim chart As IChart = worksheet.Charts(0) + + ' Used to invert series color if the value is negative in XLS (binary) format + chart.Series(0).SerieFormat.Interior.SwapColorsOnNegative = True + + ' Saving the workbook + workbook.SaveAs("Output.xls") +End Using +{% endhighlight %} +{% endtabs %} \ No newline at end of file From a43b2db5aa7d65e119a9c915a148bd2038c2646a Mon Sep 17 00:00:00 2001 From: VinothSF5015 Date: Mon, 20 Apr 2026 18:56:17 +0530 Subject: [PATCH 005/337] Issue Fixed --- .../faqs/how-to-set-invert-if-negative-option-for-a-chart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md index e4c79e30ef..fbac3fe1b7 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-invert-if-negative-option-for-a-chart.md @@ -76,7 +76,7 @@ End Using A complete working example in C# is present on this GitHub page. -# How to set invert if negative option for a chart in XLS (binary) file format? +## How to set invert if negative option for a chart in XLS (binary) file format? In case of binary file format (XLS), kindly use the following code snippet. From a180bbb1a7cadc4428b5e4949b970ee547279859 Mon Sep 17 00:00:00 2001 From: mercy-orejo Date: Thu, 23 Apr 2026 14:36:36 +0300 Subject: [PATCH 006/337] Task-219947-SERPSTAT-Issue-fixes-Help-Domain-doc-processing-Server-Status-Code-Error --- ...w-to-copy-a-range-from-one-workbook-to-another.md | 12 ++++++------ ...h-a-matching-case-for-specific-column-in-Excel.md | 12 ++++++------ .../NET/faqs/how-to-format-text-within-a-cell.md | 12 ++++++------ .../how-to-overcome-unauthorizedaccessexception.md | 8 ++++---- ...he-zip-files-using-syncfusion-compression-base.md | 4 ++-- ...les-in-subfolders-using-syncfusion-compression.md | 8 ++++---- ...use-autodetectcomplexscript-converter-property.md | 12 ++++++------ 7 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-copy-a-range-from-one-workbook-to-another.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-copy-a-range-from-one-workbook-to-another.md index b5d14f8b15..82bf866d9f 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-copy-a-range-from-one-workbook-to-another.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-copy-a-range-from-one-workbook-to-another.md @@ -8,7 +8,7 @@ documentation: UG # How to copy a range from one workbook to another? -You can copy the range from source workbook to the destination workbook through [CopyTo](https://help.syncfusion.com/cr/file-formats/Syncfusion.XlsIO.IRange.html#Syncfusion_XlsIO_IRange_CopyTo_Syncfusion_XlsIO_IRange_Syncfusion_XlsIO_ExcelCopyRangeOptions_) method. +You can copy the range from source workbook to the destination workbook through [CopyTo](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.IRange.html#Syncfusion_XlsIO_IRange_CopyTo_Syncfusion_XlsIO_IRange_Syncfusion_XlsIO_ExcelCopyRangeOptions_) method. The following code snippet illustrates this. @@ -92,8 +92,8 @@ End Using ## See Also -* [How to copy/paste the cell values that contain only formula?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-copy-paste-the-cell-values-that-contain-only-formula) -* [How to copy or move a range?](https://help.syncfusion.com/file-formats/xlsio/worksheet-cells-manipulation#copy-or-move-a-range) -* [How to copy and paste as link?](https://help.syncfusion.com/file-formats/xlsio/worksheet-cells-manipulation#copy-and-paste-as-link) -* [How to skip blanks while copying?](https://help.syncfusion.com/file-formats/xlsio/worksheet-cells-manipulation#skip-blanks-while-copying) -* [How to open an existing XLSX workbook and save it as XLS?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-open-an-existing-xlsx-workbook-and-save-it-as-xls) +* [How to copy/paste the cell values that contain only formula?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-copy-paste-the-cell-values-that-contain-only-formula) +* [How to copy or move a range?](https://help.syncfusion.com/document-processing/excel/excel-library/net/worksheet-cells-manipulation#copy-or-move-a-range) +* [How to copy and paste as link?](https://help.syncfusion.com/document-processing/excel/excel-library/net/worksheet-cells-manipulation#copy-and-paste-as-link) +* [How to skip blanks while copying?](https://help.syncfusion.com/document-processing/excel/excel-library/net/worksheet-cells-manipulation#skip-blanks-while-copying) +* [How to open an existing XLSX workbook and save it as XLS?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-open-an-existing-xlsx-workbook-and-save-it-as-xls) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-find-values-with-a-matching-case-for-specific-column-in-Excel.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-find-values-with-a-matching-case-for-specific-column-in-Excel.md index 30726b4d29..52f11d5b6a 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-find-values-with-a-matching-case-for-specific-column-in-Excel.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-find-values-with-a-matching-case-for-specific-column-in-Excel.md @@ -7,7 +7,7 @@ documentation: UG --- # How to find values with a matching case for specific column in Excel? -XlsIO allows finding values with matching case for specific column in Excel worksheet using **MatchCase** option of [ExcelFindOptions](https://help.syncfusion.com/cr/file-formats/Syncfusion.XlsIO.ExcelFindOptions.html) enumeration through [Find](https://help.syncfusion.com/cr/file-formats/Syncfusion.XlsIO.Implementation.WorksheetImpl.html#Syncfusion_XlsIO_Implementation_WorksheetImpl_Find_Syncfusion_XlsIO_IRange_System_String_Syncfusion_XlsIO_ExcelFindType_Syncfusion_XlsIO_ExcelFindOptions_System_Boolean_) method of [WorksheetImpl](https://help.syncfusion.com/cr/file-formats/Syncfusion.XlsIO.Implementation.WorksheetImpl.html). The following code illustrates this. +XlsIO allows finding values with matching case for specific column in Excel worksheet using **MatchCase** option of [ExcelFindOptions](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.ExcelFindOptions.html) enumeration through [Find](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.Implementation.WorksheetImpl.html#Syncfusion_XlsIO_Implementation_WorksheetImpl_Find_Syncfusion_XlsIO_IRange_System_String_Syncfusion_XlsIO_ExcelFindType_Syncfusion_XlsIO_ExcelFindOptions_System_Boolean_) method of [WorksheetImpl](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.Implementation.WorksheetImpl.html). The following code illustrates this. {% tabs %} {% highlight c# tabtitle="C# [Cross-platform]" %} @@ -82,11 +82,11 @@ End Using ## See Also -* [How to opening an existing workbook?](https://help.syncfusion.com/file-formats/xlsio/loading-and-saving-workbook#opening-an-existing-workbook) -* [How to perform Find and Replace?](https://help.syncfusion.com/file-formats/xlsio/worksheet-cells-manipulation#find-and-replace) -* [How to get entire column of the particular range?](https://help.syncfusion.com/file-formats/xlsio/worksheet-cells-manipulation#entire-column) -* [How to define discontinuous ranges?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-define-discontinuous-ranges) +* [How to opening an existing workbook?](https://help.syncfusion.com/document-processing/excel/excel-library/net/loading-and-saving-workbook#opening-an-existing-workbook-from-stream) +* [How to perform Find and Replace?](https://help.syncfusion.com/document-processing/excel/excel-library/net/worksheet-cells-manipulation#find-and-replace) +* [How to get entire column of the particular range?](https://help.syncfusion.com/document-processing/excel/excel-library/net/worksheet-cells-manipulation#entire-column) +* [How to define discontinuous ranges?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-define-discontinuous-ranges) * [How to create and open Excel Template files by using XlsIO?](how-to-create-and-open-excel-template-files-by-using-xlsio) * [How to copy a range from one workbook to another?](how-to-copy-a-range-from-one-workbook-to-another) * [How to sort two or more columns in a pivot table?](how-to-sort-two-or-more-columns-in-a-pivot-table) -* [How to move or copy a worksheet?](https://help.syncfusion.com/file-formats/xlsio/working-with-excel-worksheet#move-or-copy-a-worksheet) +* [How to move or copy a worksheet?](https://help.syncfusion.com/document-processing/excel/excel-library/net/worksheet/move-or-copy) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-format-text-within-a-cell.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-format-text-within-a-cell.md index 52b70f3edb..1b8c86388a 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-format-text-within-a-cell.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-format-text-within-a-cell.md @@ -108,9 +108,9 @@ End Using ## See Also -* [How to set a line break inside a cell?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-set-a-line-break-inside-a-cell) -* [How to protect certain cells in a worksheet?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-protect-certain-cells-in-a-worksheet) -* [How to copy/paste the cell values that contain only formula?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-copy-paste-the-cell-values-that-contain-only-formula) -* [How to rich-text formatting?](https://help.syncfusion.com/file-formats/xlsio/working-with-cell-or-range-formatting#rich-text-formatting) -* [How to apply number formats?](https://help.syncfusion.com/file-formats/xlsio/working-with-cell-or-range-formatting#apply-number-formats) -* [How to apply cell text alignment?](https://help.syncfusion.com/file-formats/xlsio/working-with-cell-or-range-formatting#apply-cell-text-alignment) +* [How to set a line break inside a cell?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-set-a-line-break-inside-a-cell) +* [How to protect certain cells in a worksheet?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-protect-certain-cells-in-a-worksheet) +* [How to copy/paste the cell values that contain only formula?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-copy-paste-the-cell-values-that-contain-only-formula) +* [How to rich-text formatting?](https://help.syncfusion.com/document-processing/excel/excel-library/net/working-with-cell-or-range-formatting#rich-text-formatting) +* [How to apply number formats?](https://help.syncfusion.com/document-processing/excel/excel-library/net/working-with-cell-or-range-formatting#apply-number-formats) +* [How to apply cell text alignment?](https://help.syncfusion.com/document-processing/excel/excel-library/net/working-with-cell-or-range-formatting#apply-cell-text-alignment) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-overcome-unauthorizedaccessexception.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-overcome-unauthorizedaccessexception.md index ca60c99c4a..ab40452c8f 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-overcome-unauthorizedaccessexception.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-overcome-unauthorizedaccessexception.md @@ -14,7 +14,7 @@ First, check whether you can access the folder and the file directly. Then, righ ## See Also -* [How to overcome StackOverflow exception with IWorksheet Calculate()?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-overcome-stackoverflow-exception-with-iworksheet-calculate) -* [How to avoid exception when adding worksheets with same name?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-avoid-exception-when-adding-worksheets-with-same-name) -* [What are the known exceptions of XlsIO?](https://help.syncfusion.com/file-formats/xlsio/known-exceptions) -* [How to secure Excel documents?](https://help.syncfusion.com/file-formats/xlsio/security) +* [How to overcome StackOverflow exception with IWorksheet Calculate()?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-overcome-stackoverflow-exception-with-iworksheet-calculate) +* [How to avoid exception when adding worksheets with same name?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-avoid-exception-when-adding-worksheets-with-same-name) +* [What are the known exceptions of XlsIO?](https://help.syncfusion.com/document-processing/excel/excel-library/net/known-exceptions) +* [How to secure Excel documents?](https://help.syncfusion.com/document-processing/excel/excel-library/net/security) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-protect-the-zip-files-using-syncfusion-compression-base.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-protect-the-zip-files-using-syncfusion-compression-base.md index 08121b0f9a..cfb8257de7 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-protect-the-zip-files-using-syncfusion-compression-base.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-protect-the-zip-files-using-syncfusion-compression-base.md @@ -68,5 +68,5 @@ End Module * [How to zip files using the Syncfusion.Compression.Zip namespace?](how-to-zip-files-using-the-syncfusion-compression-zip-namespace) * [How to zip all the files in subfolders using Syncfusion® Compression?](how-to-zip-all-the-files-in-subfolders-using-syncfusion-compression) * [How to protect certain cells in a worksheet?](how-to-protect-certain-cells-in-a-worksheet) -* [How to protect Excel workbook?](https://help.syncfusion.com/file-formats/xlsio/migrate-from-office-automation-to-syncfusion-xlsio/protect-excel-workbook) -* [How to protect worksheet?](https://help.syncfusion.com/file-formats/xlsio/security#protect-worksheet) +* [How to protect Excel workbook?](https://help.syncfusion.com/document-processing/excel/excel-library/net/migrate-from-office-automation-to-syncfusion-xlsio/protect-excel-workbook) +* [How to protect worksheet?](https://help.syncfusion.com/document-processing/excel/excel-library/net/security#protect-worksheet) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-zip-all-the-files-in-subfolders-using-syncfusion-compression.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-zip-all-the-files-in-subfolders-using-syncfusion-compression.md index 76daaf00fe..1d157e2dff 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-zip-all-the-files-in-subfolders-using-syncfusion-compression.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-zip-all-the-files-in-subfolders-using-syncfusion-compression.md @@ -363,7 +363,7 @@ End Module ## See Also -* [How to zip files using the Syncfusion.Compression.Zip namespace?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-zip-files-using-the-syncfusion-compression-zip-namespace) -* [How to protect the zip files using Syncfusion.Compression.Base?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-protect-the-zip-files-using-syncfusion-compression-base) -* [How to un-protect the zip files using Syncfusion.Compression.Base?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-un-protect-the-zip-files-using-syncfusion-compression-base) -* [How to merge excel files from more than one workbook to a single file?](https://help.syncfusion.com/file-formats/xlsio/faqs/how-to-merge-excel-files-from-more-than-one-workbook-to-a-single-file) +* [How to zip files using the Syncfusion.Compression.Zip namespace?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-zip-files-using-the-syncfusion-compression-zip-namespace) +* [How to protect the zip files using Syncfusion.Compression.Base?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-protect-the-zip-files-using-syncfusion-compression-base) +* [How to un-protect the zip files using Syncfusion.Compression.Base?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-un-protect-the-zip-files-using-syncfusion-compression-base) +* [How to merge excel files from more than one workbook to a single file?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/how-to-merge-excel-files-from-more-than-one-workbook-to-a-single-file) diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/in-which-situation-we-use-autodetectcomplexscript-converter-property.md b/Document-Processing/Excel/Excel-Library/NET/faqs/in-which-situation-we-use-autodetectcomplexscript-converter-property.md index a46c5aa20c..c80fde45de 100644 --- a/Document-Processing/Excel/Excel-Library/NET/faqs/in-which-situation-we-use-autodetectcomplexscript-converter-property.md +++ b/Document-Processing/Excel/Excel-Library/NET/faqs/in-which-situation-we-use-autodetectcomplexscript-converter-property.md @@ -10,14 +10,14 @@ documentation: UG Complex script languages are some languages (eg., Arabic) which stores text differently from how it is displayed. Many such languages use bidirectional script which means, words and sentences are written from right to left, while some text such as numbers and Roman-based words are written from left to right. -If your input Excel file contains such complex script languages, then the [AutoDetectComplexScript](https://help.syncfusion.com/cr/file-formats/Syncfusion.ExcelToPdfConverter.ExcelToPdfConverterSettings.html#Syncfusion_ExcelToPdfConverter_ExcelToPdfConverterSettings_AutoDetectComplexScript) property can be used to render them in PDF. +If your input Excel file contains such complex script languages, then the [AutoDetectComplexScript](https://help.syncfusion.com/cr/document-processing/Syncfusion.ExcelToPdfConverter.ExcelToPdfConverterSettings.html#Syncfusion_ExcelToPdfConverter_ExcelToPdfConverterSettings_AutoDetectComplexScript) property can be used to render them in PDF. ## See Also -* [How to auto-detect complex script?](https://help.syncfusion.com/file-formats/xlsio/excel-to-pdf-converter-settings#auto-detect-complex-script) -* [How to use substitute font in Excel to PDF conversion?](https://help.syncfusion.com/file-formats/xlsio/excel-to-pdf-conversion#substitute-font-in-excel-to-pdf-conversion) -* [How to Embed Fonts?](https://help.syncfusion.com/file-formats/xlsio/excel-to-pdf-converter-settings#embed-fonts) -* [How to capture warnings in Excel to PDF conversion?](https://help.syncfusion.com/file-formats/xlsio/excel-to-pdf-converter-settings#capture-warnings-in-excel-to-pdf-conversion) -* [What is the image quality when using the ExportQualityImage property?](https://help.syncfusion.com/file-formats/xlsio/faqs/what-is-the-image-quality-when-using-the-exportqualityimage-property) +* [How to auto-detect complex script?](https://help.syncfusion.com/document-processing/excel/conversions/excel-to-pdf/net/excel-to-pdf-converter-settings#auto-detect-complex-script) +* [How to use substitute font in Excel to PDF conversion?](https://help.syncfusion.com/document-processing/excel/conversions/excel-to-pdf/net/excel-to-pdf-conversion#substitute-font-in-excel-to-pdf-conversion) +* [How to Embed Fonts?](https://help.syncfusion.com/document-processing/excel/conversions/excel-to-pdf/net/excel-to-pdf-converter-settings#embed-fonts) +* [How to capture warnings in Excel to PDF conversion?](https://help.syncfusion.com/document-processing/excel/conversions/excel-to-pdf/net/excel-to-pdf-converter-settings#capture-warnings-in-excel-to-pdf-conversion) +* [What is the image quality when using the ExportQualityImage property?](https://help.syncfusion.com/document-processing/excel/excel-library/net/faqs/what-is-the-image-quality-when-using-the-exportqualityimage-property) From 3f7be70186bb05831b278442a941a9ce1c078c6e Mon Sep 17 00:00:00 2001 From: Sujitha Siva Date: Fri, 24 Apr 2026 12:19:35 +0530 Subject: [PATCH 007/337] 1023472: Updated React Getting Started --- Document-Processing-toc.html | 2 +- .../Word/Word-Processor/overview.md | 4 +- .../Word-Processor/react/getting-started.md | 224 +----------------- 3 files changed, 12 insertions(+), 218 deletions(-) diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html index 79389eb762..e6484477cb 100644 --- a/Document-Processing-toc.html +++ b/Document-Processing-toc.html @@ -3388,7 +3388,7 @@ Word
    • - Word Processor + DOCX Editor SDK
      • ASP.NET Core diff --git a/Document-Processing/Word/Word-Processor/overview.md b/Document-Processing/Word/Word-Processor/overview.md index c4c54da715..9538352b24 100644 --- a/Document-Processing/Word/Word-Processor/overview.md +++ b/Document-Processing/Word/Word-Processor/overview.md @@ -7,7 +7,7 @@ documentation: UG keywords: Word, SDK, view, edit, read, document-editor --- -# Welcome to Syncfusion® Word Processor Component +# Welcome to Syncfusion® DOCX Editor Component -Syncfusion® Word Processor component is a Microsoft Word-like GUI component used to view, edit and print Word documents in WPF, JavaScript, Angular, React, Vue, ASP.NET MVC, ASP.NET Core, and Blazor applications that works without Microsoft Office dependencies. It eases you developers to just integrate this Word editor component to achieve the required Word document viewing, editing functionalities and concentrate on core logics of your application. +Syncfusion® DOCX Editor component is a Microsoft Word-like GUI component used to view, edit and print Word documents in WPF, JavaScript, Angular, React, Vue, ASP.NET MVC, ASP.NET Core, and Blazor applications that works without Microsoft Office dependencies. It eases you developers to just integrate this Word editor component to achieve the required Word document viewing, editing functionalities and concentrate on core logics of your application. diff --git a/Document-Processing/Word/Word-Processor/react/getting-started.md b/Document-Processing/Word/Word-Processor/react/getting-started.md index 130a532efb..275500c798 100644 --- a/Document-Processing/Word/Word-Processor/react/getting-started.md +++ b/Document-Processing/Word/Word-Processor/react/getting-started.md @@ -1,6 +1,6 @@ --- layout: post -title: Getting started with React Document editor component | Syncfusion +title: Getting started with React DOCX editor component | Syncfusion description: Checkout and learn about Getting started with React Document editor component of Syncfusion Essential JS 2 and more details. control: Getting started platform: document-processing @@ -8,11 +8,11 @@ documentation: ug domainurl: ##DomainURL## --- -# Getting started with React Document editor component +# Getting started with React DOCX editor component This section explains the steps to create a Word document editor within your application and demonstrates the basic usage of the Document editor component. -To get started quickly with DocumentEditor component, you can check the video below. +To get started quickly with Document Editor component, you can check the video below. {% youtube "https://www.youtube.com/watch?v=tgJgvbnxdBA" %} @@ -20,49 +20,6 @@ To get started quickly with DocumentEditor component, you can check the video be [System requirements for Syncfusion® Document editor](https://ej2.syncfusion.com/react/documentation/system-requirement) -## Dependencies - -The following list shows the minimum dependencies required to use the Document editor component: - -```javascript -|-- @syncfusion/ej2-react-documenteditor - |-- @syncfusion/ej2-react-base - |-- @syncfusion/ej2-base - |-- @syncfusion/ej2-build - |-- @syncfusion/ej2-buttons - |-- @syncfusion/ej2-compression - |-- @syncfusion/ej2-data - |-- @syncfusion/ej2-dropdowns - |-- @syncfusion/ej2-file-utils - |-- @syncfusion/ej2-inputs - |-- @syncfusion/ej2-lists - |-- @syncfusion/ej2-navigations - |-- @syncfusion/ej2-popups - |-- @syncfusion/ej2-splitbuttons - |-- @syncfusion/ej2-documenteditor - |-- @syncfusion/ej2-charts -``` - -### Server-side dependencies - -The Document editor component requires server-side interactions for the following operations: - -* [Open file formats other than SFDT](./import#convert-word-documents-into-sfdt) -* [Paste with formatting](./clipboard#paste-with-formatting) -* [Restrict editing](./document-management) -* [Spell check](./spell-check) -* [Save as file formats other than SFDT and DOCX](./saving-documents/server-side-export) - ->Note: If you don't require the above functionalities, you can deploy the component as a pure client-side solution without any server-side interactions. - -For detailed information about server-side dependencies, refer to the [Web Services Overview](./web-services-overview) page. - -## Setup for local development - -To easily set up a React application, use `create-vite-app`, which provides a faster development environment, smaller bundle sizes, and optimized builds compared to traditional tools like `create-react-app`. For detailed steps, refer to the Vite [installation instructions](https://vitejs.dev/guide/). Vite sets up your environment using JavaScript and optimizes your application for production. - -> **Note:** To create a React application using `create-react-app`, refer to this [documentation](https://ej2.syncfusion.com/react/documentation/getting-started/create-app) for more details. - ### Create a new React application To create a new React application, run the following command: @@ -71,8 +28,6 @@ To create a new React application, run the following command: npm create vite@latest my-app ``` -### Set up TypeScript environment - To set up a React application in a TypeScript environment, run the following commands: ```bash @@ -81,18 +36,8 @@ cd my-app npm run dev ``` -### Set up JavaScript environment - -To set up a React application in a JavaScript environment, run the following commands: - -```bash -npm create vite@latest my-app -- --template react -cd my-app -npm run dev -``` - -## Adding Syncfusion® packages +## Install the Syncfusion® Document Editor packages All available Essential® JS 2 packages are published in [`npmjs.com`](https://www.npmjs.com/~syncfusionorg) public registry. You can choose the component that you want to install. @@ -103,8 +48,6 @@ To install the Document editor component, use the following command: npm install @syncfusion/ej2-react-documenteditor --save ``` ->Note: The `--save` flag instructs npm to include the Document editor package inside the dependencies section of the `package.json` file. - ## Adding CSS reference Add the Document editor component and its dependent component styles available in the `node_modules/@syncfusion` package folder. Reference these styles in the `src/App.css` file: @@ -118,23 +61,11 @@ Add the Document editor component and its dependent component styles available i @import '../node_modules/@syncfusion/ej2-navigations/styles/material.css'; @import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css'; @import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css'; +@import "../node_modules/@syncfusion/ej2-ribbon/styles/material.css"; @import "../node_modules/@syncfusion/ej2-documenteditor/styles/material.css"; ``` ->Note: To learn about individual component CSS files, refer to the [Individual Component theme files](https://ej2.syncfusion.com/react/documentation/appearance/theme#referring-individual-control-theme) section. - -## Choosing a component - -* **DocumentEditorContainer**: A complete solution with a predefined toolbar and properties pane for comprehensive document editing -* **DocumentEditor**: A customizable component where you build the UI according to your specific requirements - ->Note: Starting from version `v19.3.0.x`, the text size measurement accuracy has been optimized to match Microsoft Word pagination for most documents. This improvement is enabled by default. You can [disable it to retain the pagination behavior of older versions](./how-to/disable-optimized-text-measuring) if needed. - -### DocumentEditorContainer component - -The DocumentEditorContainer component provides a complete document editing experience with a predefined toolbar and properties pane, allowing users to create, view, and edit Word documents with minimal configuration. - -#### Adding DocumentEditorContainer component +## Add the Syncfusion® Document Editor component Add the DocumentEditorContainer component to your application. In the `src/App.tsx` file, add the following code to initialize the component: @@ -164,13 +95,14 @@ export default App; > The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` used in the Document editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, host your own web service with the required server configurations. Refer to the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or use the [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service. -#### Run the DocumentEditorContainer application +#### Run the application -Run the following command in the console to start the development server: +Run the application using the following command: ```bash npm run dev ``` +Open http://localhost:3000 in your browser to see the DocumentEditorContainer output displayed as shown below. The DocumentEditorContainer output will be displayed as follows: @@ -188,142 +120,4 @@ The DocumentEditorContainer output will be displayed as follows: {% previewsample "/document-processing/code-snippet/document-editor/react/base-cs3" %} -### DocumentEditor component - -The DocumentEditor component provides a flexible foundation for creating, viewing, and editing Word documents. Unlike DocumentEditorContainer, this component allows you to customize the UI options based on your specific requirements. - -#### Adding DocumentEditor component - -Add the DocumentEditor component to your application. In the `src/App.tsx` file, add the following code to initialize the component with the required services: - -```ts -import * as React from 'react'; -import { - DocumentEditorComponent, - Print, - SfdtExport, - WordExport, - TextExport, - Selection, - Search, - Editor, - ImageResizer, - EditorHistory, - ContextMenu, - OptionsPane, - HyperlinkDialog, - TableDialog, - BookmarkDialog, - TableOfContentsDialog, - PageSetupDialog, - StyleDialog, - ListDialog, - ParagraphDialog, - BulletsAndNumberingDialog, - FontDialog, - TablePropertiesDialog, - BordersAndShadingDialog, - TableOptionsDialog, - CellOptionsDialog, - StylesDialog -} from '@syncfusion/ej2-react-documenteditor'; - -DocumentEditorComponent.Inject( - Print, - SfdtExport, - WordExport, - TextExport, - Selection, - Search, - Editor, - ImageResizer, - EditorHistory, - ContextMenu, - OptionsPane, - HyperlinkDialog, - TableDialog, - BookmarkDialog, - TableOfContentsDialog, - PageSetupDialog, - StyleDialog, - ListDialog, - ParagraphDialog, - BulletsAndNumberingDialog, - FontDialog, - TablePropertiesDialog, - BordersAndShadingDialog, - TableOptionsDialog, - CellOptionsDialog, - StylesDialog -); - -function App() { - return ( - - ); -} - -export default App; -``` - -> The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` used in the Document editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, host your own web service with the required server configurations. Refer to the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or use the [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service. - -#### Run the DocumentEditor application - -Run the following command to compile and start the application: - -```bash -npm run dev -``` - -The Document editor output will be displayed as follows: - -{% tabs %} -{% highlight js tabtitle="App.jsx" %} -{% include code-snippet/document-editor/react/base-cs2/app/index.jsx %} -{% endhighlight %} -{% highlight ts tabtitle="App.tsx" %} -{% include code-snippet/document-editor/react/base-cs2/app/index.tsx %} -{% endhighlight %} -{% highlight html tabtitle="App.html" %} -{% include code-snippet/document-editor/react/base-cs2/index.html %} -{% endhighlight %} -{% endtabs %} - -{% previewsample "/document-processing/code-snippet/document-editor/react/base-cs2" %} - -## Frequently Asked Questions -* [How to localize the Document editor container](./global-local) -* [How to load a document by default](./how-to/open-default-document) -* [How to customize the toolbar](./how-to/customize-tool-bar) -* [How to resize the Document editor component](./how-to/resize-document-editor) -* [How to add a save button to the DocumentEditorContainer toolbar](./how-to/add-save-button-in-toolbar) From 25c4671e8c1afba73df65489f76eed523bc9ca61 Mon Sep 17 00:00:00 2001 From: DinakarSF4212 <152485061+DinakarManickam4212@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:43:49 +0530 Subject: [PATCH 008/337] 1021957: Updated Vite details and added installation commands as tabs --- .../Spreadsheet/React/getting-started.md | 114 ++++++++---------- 1 file changed, 47 insertions(+), 67 deletions(-) diff --git a/Document-Processing/Excel/Spreadsheet/React/getting-started.md b/Document-Processing/Excel/Spreadsheet/React/getting-started.md index 872e583227..6e1c5ba9a0 100644 --- a/Document-Processing/Excel/Spreadsheet/React/getting-started.md +++ b/Document-Processing/Excel/Spreadsheet/React/getting-started.md @@ -2,72 +2,51 @@ layout: post title: Getting started with React Spreadsheet component | Syncfusion description: Checkout and learn about Getting started with React Spreadsheet component of Syncfusion Essential JS 2 and more details. -control: Getting started +control: Getting started platform: document-processing documentation: ug --- -# Getting started with React Spreadsheet component +# Getting Started with React Spreadsheet component -This section explains the steps to create a simple Spreadsheet component in a React application. +This section explains how to create a simple React application and add the [Syncfusion® React Spreadsheet](https://www.syncfusion.com/spreadsheet-editor-sdk/react-spreadsheet-editor) component with the minimum required setup. -To get start quickly with React Spreadsheet, you can check on this video: +## Prerequisites -{% youtube "https://www.youtube.com/watch?v=3Cx9AnKAHdY" %} - -## Dependencies - -The following list of dependencies are required to use the Spreadsheet component in your application: - -```js -|-- @syncfusion/ej2-react-spreadsheet - |-- @syncfusion/ej2-react-base - |-- @syncfusion/ej2-spreadsheet - |-- @syncfusion/ej2-base - |-- @syncfusion/ej2-dropdowns - |-- @syncfusion/ej2-navigations - |-- @syncfusion/ej2-grids - -``` +[System requirements for Syncfusion® React components](https://ej2.syncfusion.com/react/documentation/system-requirement) -## Setup for Local Development +## Create a React application -To easily set up a React application, use `create-vite-app`, which provides a faster development environment, smaller bundle sizes, and optimized builds compared to traditional tools like `create-react-app`. For detailed steps, refer to the Vite [installation instructions](https://vitejs.dev/guide/). Vite sets up your environment using JavaScript and optimizes your application for production. +Use [`Vite`](https://vite.dev/guide/) to create a new React application, as it provides a faster development environment, smaller bundle sizes, and optimized builds. -> **Note:** To create a React application using `create-react-app`, refer to this [documentation](https://ej2.syncfusion.com/react/documentation/getting-started/create-app) for more details. +To create a new React application, run one of the following commands based on your preferred environment. -To create a new React application, run the following command. +{% tabs %} +{% highlight js tabtitle="JavaScript" %} -```bash -npm create vite@latest my-app -``` -To set-up a React application in TypeScript environment, run the following command. +npm create vite@latest spreadsheet-app -- --template react +cd spreadsheet-app -```bash -npm create vite@latest my-app -- --template react-ts -cd my-app -npm run dev -``` -To set-up a React application in JavaScript environment, run the following command. +{% endhighlight %} +{% highlight ts tabtitle="TypeScript" %} -```bash -npm create vite@latest my-app -- --template react -cd my-app -npm run dev -``` +npm create vite@latest spreadsheet-app -- --template react-ts +cd spreadsheet-app +{% endhighlight %} +{% endtabs %} -## Adding Syncfusion® packages +## Install the Syncfusion® React Spreadsheet package -All the available Essential® JS 2 packages are published in [`npmjs.com`](https://www.npmjs.com/~syncfusionorg) public registry. To install Spreadsheet component use the following command. +Install the [React Spreadsheet](https://www.npmjs.com/package/@syncfusion/ej2-react-spreadsheet) package from npm using the following command: ``` npm install @syncfusion/ej2-react-spreadsheet --save ``` -## Adding CSS reference +## Add CSS references - Add components style as given below in `src/App.css`. +Add the following style references to the `src/App.css` file. ```css @import '../node_modules/@syncfusion/ej2-base/styles/material.css'; @@ -82,45 +61,46 @@ npm install @syncfusion/ej2-react-spreadsheet --save @import '../node_modules/@syncfusion/ej2-react-spreadsheet/styles/material.css'; ``` -> To refer `App.css` in the application then import it in the `src/App.tsx` file. +## Add the Syncfusion® React Spreadsheet component to the application -## Adding Spreadsheet component +Now, import the `SpreadsheetComponent` into your `src/App.jsx` or `src/App.tsx` file and render it. -Now, you can import the spreadsheet component into your `src/App.tsx` file. +{% tabs %} +{% highlight js tabtitle="app.jsx" %} +{% include code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx %} +{% endhighlight %} +{% highlight ts tabtitle="app.tsx" %} +{% include code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx %} +{% endhighlight %} +{% endtabs %} -```ts -import * as React from 'react'; -import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet'; -import './App.css'; -export default function App() { - return (); -} -``` +> **Note:** The [`openUrl`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#openurl) and [`saveUrl`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveurl) endpoints used in this example are provided only for demonstration purposes. For development and production use, we strongly recommend configuring your own local or hosted web service for the Open and Save actions instead of relying on the online demo service. For more information, refer to the [`Web Services`](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/web-services/webservice-overview) section. ## Run the application -Now run the `npm run dev` command in the console to start the development server. This command compiles your code and serves the application locally, opening it in the browser. +Run the following command to start the development server: ``` npm run dev ``` -The following example shows a basic spreadsheet component. +After the application starts, open the local URL shown in the terminal to view the React Spreadsheet Editor in the browser. -{% tabs %} -{% highlight js tabtitle="app.jsx" %} -{% include code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx %} -{% endhighlight %} -{% highlight ts tabtitle="app.tsx" %} -{% include code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx %} -{% endhighlight %} -{% endtabs %} +The following example shows a basic spreadsheet component. - {% previewsample "/document-processing/code-snippet/spreadsheet/react/getting-started-cs1" %} +{% previewsample "/document-processing/code-snippet/spreadsheet/react/getting-started-cs1" %} > You can refer to our [React Spreadsheet](https://www.syncfusion.com/react-components/react-spreadsheet) feature tour page for its groundbreaking feature representations. You can also explore our [React Spreadsheet example](https://document.syncfusion.com/demos/spreadsheet-editor/react/#/tailwind3/spreadsheet/default) that shows you how to present and manipulate data. -## See Also +## Video tutorial + +To get started quickly with React Spreadsheet, you can watch this video: + +{% youtube "https://www.youtube.com/watch?v=3Cx9AnKAHdY" %} + +## See also * [Data Binding](./data-binding) -* [Open and Save](./open-save) \ No newline at end of file +* [Open Excel files](./open-excel-files) +* [Save Excel files](./save-excel-files) +* [Web Services](./web-services/webservice-overview) From 4fb48302aa86a3ba6f4d64cc907e24508ad7b289 Mon Sep 17 00:00:00 2001 From: Sujitha Siva Date: Fri, 24 Apr 2026 12:52:38 +0530 Subject: [PATCH 009/337] 1023472: Addressed review changes --- Document-Processing-toc.html | 2 +- .../Word/Word-Processor/overview.md | 2 +- .../Word/Word-Processor/react/getting-started.md | 15 +++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html index e6484477cb..2027461d5f 100644 --- a/Document-Processing-toc.html +++ b/Document-Processing-toc.html @@ -3388,7 +3388,7 @@ Word
        • - DOCX Editor SDK + DOCX Editor
          • ASP.NET Core diff --git a/Document-Processing/Word/Word-Processor/overview.md b/Document-Processing/Word/Word-Processor/overview.md index 9538352b24..9f26da7432 100644 --- a/Document-Processing/Word/Word-Processor/overview.md +++ b/Document-Processing/Word/Word-Processor/overview.md @@ -1,6 +1,6 @@ --- title: Microsoft Word-like Word Processor Component | Syncfusion -description: View, edit and print Word documents in WPF, JavaScript, Angular, React, Vue, ASP.NET MVC, ASP.NET Core, and Blazor applications without Microsoft Office dependencies. +description: View, edit and print Word documents in WPF, JavaScript, Angular, React, Vue, ASP.NET MVC, ASP.NET Core, and Blazor applications without Microsoft Office. platform: document-processing control: general documentation: UG diff --git a/Document-Processing/Word/Word-Processor/react/getting-started.md b/Document-Processing/Word/Word-Processor/react/getting-started.md index 275500c798..086a30e2b4 100644 --- a/Document-Processing/Word/Word-Processor/react/getting-started.md +++ b/Document-Processing/Word/Word-Processor/react/getting-started.md @@ -10,7 +10,7 @@ domainurl: ##DomainURL## # Getting started with React DOCX editor component -This section explains the steps to create a Word document editor within your application and demonstrates the basic usage of the Document editor component. +This section explains the steps to create a DOCX Editor within your application and demonstrates the basic usage of the Document editor component. To get started quickly with Document Editor component, you can check the video below. @@ -39,8 +39,8 @@ npm run dev ## Install the Syncfusion® Document Editor packages -All available Essential® JS 2 packages are published in [`npmjs.com`](https://www.npmjs.com/~syncfusionorg) public registry. -You can choose the component that you want to install. +The Syncfusion® DOCX Editor package is available in the public npm registry and can be installed directly from [`npmjs.com`](https://www.npmjs.com/~syncfusionorg). + To install the Document editor component, use the following command: @@ -82,6 +82,7 @@ function App() { @@ -93,7 +94,7 @@ export default App; {% endraw %} -> The Web API hosted link `https://document.syncfusion.com/web-services/docx-editor/api/documenteditor/` used in the Document editor's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, host your own web service with the required server configurations. Refer to the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or use the [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server) for hosting your own web service. +> The hosted Web API URL is for demo and evaluation purposes only. For production, host your own web service using the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-DocumentEditor-WebServices) or the [Docker image](https://hub.docker.com/r/syncfusion/word-processor-server). #### Run the application @@ -107,15 +108,9 @@ Open http://localhost:3000 in your browser to see the DocumentEditorContainer ou The DocumentEditorContainer output will be displayed as follows: {% tabs %} -{% highlight js tabtitle="app.jsx" %} -{% include code-snippet/document-editor/react/base-cs3/app/index.jsx %} -{% endhighlight %} {% highlight ts tabtitle="app.tsx" %} {% include code-snippet/document-editor/react/base-cs3/app/index.tsx %} {% endhighlight %} -{% highlight html tabtitle="app.html" %} -{% include code-snippet/document-editor/react/base-cs3/index.html %} -{% endhighlight %} {% endtabs %} {% previewsample "/document-processing/code-snippet/document-editor/react/base-cs3" %} From 6dae322d28595043685f945f103bd4ee73b6146b Mon Sep 17 00:00:00 2001 From: DinakarSF4212 <152485061+DinakarManickam4212@users.noreply.github.com> Date: Fri, 24 Apr 2026 13:00:45 +0530 Subject: [PATCH 010/337] 1021957: Updated Vite details and added installation commands as tabs --- .../spreadsheet/react/getting-started-cs1/app/app.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx index f64033395a..66052066ee 100644 --- a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx +++ b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx @@ -3,7 +3,8 @@ import { createRoot } from 'react-dom/client'; import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet'; export default function App() { - return (); + return (); } const root = createRoot(document.getElementById('root')); -root.render(); \ No newline at end of file +root.render(); From 6dde83e751f06198a881d64e2cbcd1c45cee16d9 Mon Sep 17 00:00:00 2001 From: DinakarSF4212 <152485061+DinakarManickam4212@users.noreply.github.com> Date: Fri, 24 Apr 2026 13:01:25 +0530 Subject: [PATCH 011/337] 1021957: Updated Vite details and added installation commands as tabs --- .../spreadsheet/react/getting-started-cs1/app/app.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx index dd665327ec..2d997438cd 100644 --- a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx +++ b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx @@ -3,7 +3,8 @@ import { createRoot } from 'react-dom/client'; import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet'; export default function App() { - return (); + return (); } const root = createRoot(document.getElementById('root')!); -root.render(); \ No newline at end of file +root.render(); From e1901306950ecf71a11a27e37020e3f1f9182433 Mon Sep 17 00:00:00 2001 From: PrakashRajKumar Date: Fri, 24 Apr 2026 13:10:30 +0530 Subject: [PATCH 012/337] 000000: Updated the Spreadsheet Blazor Getting started with necessary steps to integrate component quickly. --- .../Blazor/getting-started-webapp.md | 161 +++++------------- .../Blazor/images/blazor-spreadsheet.png | Bin 0 -> 122912 bytes 2 files changed, 46 insertions(+), 115 deletions(-) create mode 100644 Document-Processing/Excel/Spreadsheet/Blazor/images/blazor-spreadsheet.png diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md b/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md index 49b3f704dc..4c722edb16 100644 --- a/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md +++ b/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md @@ -9,7 +9,7 @@ documentation: ug # Getting Started with the Blazor Spreadsheet in Web App -This section provides a brief guide on including the [Blazor Spreadsheet](https://www.syncfusion.com/blazor-components/blazor-spreadsheet) component in a Blazor Web App using [Visual Studio](https://visualstudio.microsoft.com/vs/) and [Visual Studio Code](https://code.visualstudio.com/). +This section briefly explains how to include the [Blazor Spreadsheet](https://www.syncfusion.com/blazor-components/blazor-spreadsheet) component in a Blazor Web App using [Visual Studio](https://visualstudio.microsoft.com/vs/) and [Visual Studio Code](https://code.visualstudio.com/). {% tabcontents %} @@ -19,30 +19,9 @@ This section provides a brief guide on including the [Blazor Spreadsheet](https: * [System requirements for Blazor components](https://blazor.syncfusion.com/documentation/system-requirements) -## Create a New Blazor Web App in Visual Studio +## Create a new Blazor Web App in Visual Studio -Create a **Blazor Web App** using Visual Studio 2022 via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio). - -Need to configure the corresponding [Interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [Interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) while creating a Blazor Web Application. - -## Install Syncfusion® Blazor Spreadsheet and Themes NuGet Packages in the App - -To add **Syncfusion Blazor Spreadsheet** component in the app, open the NuGet package manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*), search and install [Syncfusion.Blazor.Spreadsheet](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet) and [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/). - -If you utilize `WebAssembly or Auto` render modes in the Blazor Web App need to be install Syncfusion® Blazor components NuGet packages within the client project. - -Alternatively, you can utilize the following package manager command to achieve the same. - -{% tabs %} -{% highlight C# tabtitle="Package Manager" %} - -Install-Package Syncfusion.Blazor.Spreadsheet -Version {{ site.releaseversion }} -Install-Package Syncfusion.Blazor.Themes -Version {{ site.releaseversion }} - -{% endhighlight %} -{% endtabs %} - -N> Syncfusion® Blazor components are available in [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). Refer to [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) topic for available NuGet packages list with component details. +Create a **Blazor Web App** using Visual Studio via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio). For detailed instructions, refer to the [Blazor Web App Getting Started](https://blazor.syncfusion.com/documentation/getting-started/blazor-web-app) documentation. {% endtabcontent %} @@ -52,13 +31,11 @@ N> Syncfusion® Blazor components are available in [nuget.org](https://www.nuget * [System requirements for Blazor components](https://blazor.syncfusion.com/documentation/system-requirements) -## Create a New Blazor Web App in Visual Studio Code - -Create a **Blazor Web App** using Visual Studio Code via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project). +## Create a new Blazor Web App in Visual Studio Code -Need to configure the corresponding [Interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [Interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) while creating a Blazor Web Application. +Create a **Blazor Web App** using Visual Studio Code via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project). For detailed instructions, refer to the [Blazor Web App Getting Started](https://blazor.syncfusion.com/documentation/getting-started/blazor-web-app?tabcontent=visual-studio-code) documentation. -For example, in a Blazor Web App with the `Auto` interactive render mode, use the following commands. +For example, in a Blazor Web App with the `Auto` interactive render mode, use the following commands in the integrated terminal (Ctrl+`): {% tabs %} {% highlight c# tabtitle="Blazor Web App" %} @@ -70,42 +47,35 @@ cd BlazorWebApp.Client {% endhighlight %} {% endtabs %} -N> For more information on creating a **Blazor Web App** with various interactive modes and locations, refer to this [link](./getting-started/blazor-web-app?tabcontent=visual-studio-code#render-interactive-modes). +{% endtabcontent %} -## Install Syncfusion® Blazor Spreadsheet and Themes NuGet in the App +{% endtabcontents %} -If you utilize `WebAssembly` or `Auto` render modes in the Blazor Web App need to be install Syncfusion® Blazor components NuGet packages within the client project. +N> Configure the appropriate [Interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [Interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vs) while creating a Blazor Web App. For detailed information, refer to the [interactive render mode documentation](https://blazor.syncfusion.com/documentation/common/interactive-render-mode). -* Press Ctrl+` to open the integrated terminal in Visual Studio Code. -* Ensure you’re in the project root directory where your `.csproj` file is located. -* Run the following command to install a [Syncfusion.Blazor.Spreadsheet](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet) and [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/) NuGet package and ensure all dependencies are installed. +## Install Syncfusion® Blazor packages -{% tabs %} +Install [Syncfusion.Blazor.Spreadsheet](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet) and [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/) NuGet packages in your project using the NuGet Package Manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*). -{% highlight c# tabtitle="Package Manager" %} +Alternatively, run the following commands in the Package Manager Console to achieve the same. + +{% tabs %} +{% highlight C# tabtitle="Package Manager" %} dotnet add package Syncfusion.Blazor.Spreadsheet -v {{ site.releaseversion }} dotnet add package Syncfusion.Blazor.Themes -v {{ site.releaseversion }} dotnet restore {% endhighlight %} - {% endtabs %} -N> Syncfusion® Blazor components are available in [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). Refer to [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) topic for available NuGet packages list with component details. - -{% endtabcontent %} - -{% endtabcontents %} +If using the `WebAssembly` or `Auto` render modes in the Blazor Web App, install these packages in the client project. -## Register Syncfusion® Blazor Service +N> All Syncfusion Blazor packages are available on [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). See the [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) topic for details. -| Interactive Render Mode | Description | -| -- | -- | -| WebAssembly or Auto | Open **~/_Imports.razor** file from the client project.| -| Server | Open **~/_import.razor** file, which is located in the `Components` folder.| +## Add import namespaces -Import the `Syncfusion.Blazor` and `Syncfusion.Blazor.Spreadsheet` namespace. +After the packages are installed, open the **~/_Imports.razor** file in the client project and import the `Syncfusion.Blazor` and `Syncfusion.Blazor.Spreadsheet` namespaces. {% tabs %} {% highlight C# tabtitle="~/_Imports.razor" %} @@ -116,93 +86,43 @@ Import the `Syncfusion.Blazor` and `Syncfusion.Blazor.Spreadsheet` namespace. {% endhighlight %} {% endtabs %} -Now, register the Syncfusion® BlazorService in the **~/Program.cs** file of your Blazor Web App. +## Register Syncfusion® Blazor Service -If the **Interactive Render Mode** is set to `WebAssembly` or `Auto`, you need to register the Syncfusion® Blazor service in both **~/Program.cs** files of your Blazor Web App. +Register the Syncfusion Blazor service in the **Program.cs** file of your Blazor Web App. {% tabs %} -{% highlight c# tabtitle="Server(~/_Program.cs)" hl_lines="3 11" %} - -... -... -using Syncfusion.Blazor; - -var builder = WebApplication.CreateBuilder(args); - -// Add services to the container. -builder.Services.AddRazorComponents() - .AddInteractiveServerComponents() - .AddInteractiveWebAssemblyComponents(); -builder.Services.AddSyncfusionBlazor(); +{% highlight c# tabtitle="Program.cs" %} -var app = builder.Build(); .... - -{% endhighlight %} -{% highlight c# tabtitle="Client(~/_Program.cs)" hl_lines="2 5" %} - -... using Syncfusion.Blazor; - -var builder = WebAssemblyHostBuilder.CreateDefault(args); +.... builder.Services.AddSyncfusionBlazor(); - -await builder.Build().RunAsync(); +.... {% endhighlight %} {% endtabs %} -If the **Interactive Render Mode** is set to `Server`, your project will contain a single **~/Program.cs** file. So, you should register the Syncfusion® Blazor Service only in that **~/Program.cs** file. +N> If the **Interactive Render Mode** is set to `WebAssembly` or `Auto`, register the Syncfusion® Blazor service in **Program.cs** files of both the server and client projects in your Blazor Web App. -{% tabs %} -{% highlight c# tabtitle="~/_Program.cs" hl_lines="2 9" %} - -... -using Syncfusion.Blazor; +## Add stylesheet and script resources -var builder = WebApplication.CreateBuilder(args); +The theme stylesheet and script can be accessed from NuGet through [Static Web Assets](https://blazor.syncfusion.com/documentation/appearance/themes#static-web-assets). Include the stylesheet and script references in the **~/Components/App.razor** file. -// Add services to the container. -builder.Services.AddRazorComponents() - .AddInteractiveServerComponents(); -builder.Services.AddSyncfusionBlazor(); +```html -var app = builder.Build(); + .... + -{% endhighlight %} -{% endtabs %} - -## Add stylesheet and script resources - -The theme stylesheet and script can be accessed from NuGet through [Static Web Assets](https://blazor.syncfusion.com/documentation/appearance/themes#static-web-assets). Include the stylesheet reference in the `` section and the script reference at the end of the `` in the **~/Components/App.razor** file as shown below: - -```html - - .... - - - - - .... - - ``` N> Check out the [Blazor Themes](https://blazor.syncfusion.com/documentation/appearance/themes) topic to discover various methods ([Static Web Assets](https://blazor.syncfusion.com/documentation/appearance/themes#static-web-assets), [CDN](https://blazor.syncfusion.com/documentation/appearance/themes#cdn-reference), and [CRG](https://blazor.syncfusion.com/documentation/common/custom-resource-generator)) for referencing themes in your Blazor application. Also, check out the [Adding Script Reference](https://blazor.syncfusion.com/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your Blazor application. -## Add Blazor Spreadsheet - -Add the Syncfusion® Blazor Spreadsheet component in the **~Pages/.razor** file. If an interactivity location as `Per page/component` in the web app, define a render mode at the top of the `~Pages/.razor` component, as follows: +## Add Syncfusion® Blazor Spreadsheet component -| Interactivity location | RenderMode | Code | -| --- | --- | --- | -| Per page/component | Auto | @rendermode InteractiveAuto | -| | WebAssembly | @rendermode InteractiveWebAssembly | -| | Server | @rendermode InteractiveServer | -| | None | --- | +Add the Syncfusion Blazor Spreadsheet component in the **~/Components/Pages/*.razor** file. If the interactivity location is set to `Per page/component` in the Web App, define a render mode at the top of the `~/Pages/*.razor` file. (For example, `InteractiveServer`, `InteractiveWebAssembly` or `InteractiveAuto`). -N> If an **Interactivity Location** is set to `Global` and the **Render Mode** is set to `Auto` or `WebAssembly` or `Server`, the render mode is configured in the `App.razor` file by default. +N> If the **Interactivity Location** is set to `Global` with `Auto` or `WebAssembly`, the render mode is automatically configured in the `App.razor` file by default. {% tabs %} {% highlight razor %} @@ -214,7 +134,9 @@ N> If an **Interactivity Location** is set to `Global` and the **Render Mode** i {% endtabs %} {% tabs %} -{% highlight razor %} +{% highlight razor tabtitle="Home.razor" %} + +@using Syncfusion.Blazor.Spreadsheet @@ -227,10 +149,19 @@ N> If an **Interactivity Location** is set to `Global` and the **Render Mode** i { string filePath = "wwwroot/Sample.xlsx"; DataSourceBytes = File.ReadAllBytes(filePath); - } + } } {% endhighlight %} {% endtabs %} * Press Ctrl+F5 (Windows) or +F5 (macOS) to launch the application. This will render the Syncfusion Blazor Spreadsheet in your default web browser. + +{% previewsample "https://blazorplayground.syncfusion.com/embed/VNBHtJVTrpaSJNaM?appbar=true&editor=true&result=true&errorlist=true&theme=fluent2" backgroundimage "[Blazor Spreadsheet](./images/blazor-spreadsheet.png)" %} + +## See Also + +* [Blazor Spreadsheet Overview](overview.md) +* [Open and Save](open-and-save.md) + +N> You can also explore our [Blazor Spreadsheet Example](https://document.syncfusion.com/demos/spreadsheet-editor/blazor-server/spreadsheet/overview) that shows you how to render and configure the Spreadsheet. \ No newline at end of file diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/images/blazor-spreadsheet.png b/Document-Processing/Excel/Spreadsheet/Blazor/images/blazor-spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..d84b6efd46c08cddc7df97b8b65c3816088d5230 GIT binary patch literal 122912 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 Lj~+-?GV%Rig)bqp literal 0 HcmV?d00001 From 099b3eb3cf7775d5df119c3a4589675732abcc42 Mon Sep 17 00:00:00 2001 From: DinakarSF4212 <152485061+DinakarManickam4212@users.noreply.github.com> Date: Fri, 24 Apr 2026 13:37:29 +0530 Subject: [PATCH 013/337] 1021957: Updated Vite details and added installation commands as tabs --- .../spreadsheet/react/getting-started-cs1/app/app.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx index 2d997438cd..d73494be5d 100644 --- a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx +++ b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.tsx @@ -3,8 +3,8 @@ import { createRoot } from 'react-dom/client'; import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet'; export default function App() { - return (); + return (); } const root = createRoot(document.getElementById('root')!); root.render(); From f901095e1d3c0bd6cb9c69fc5d89d7e5f20a93e7 Mon Sep 17 00:00:00 2001 From: DinakarSF4212 <152485061+DinakarManickam4212@users.noreply.github.com> Date: Fri, 24 Apr 2026 13:38:03 +0530 Subject: [PATCH 014/337] 1021957: Updated Vite details and added installation commands as tabs --- .../spreadsheet/react/getting-started-cs1/app/app.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx index 66052066ee..fab8c47329 100644 --- a/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx +++ b/Document-Processing/code-snippet/spreadsheet/react/getting-started-cs1/app/app.jsx @@ -3,8 +3,8 @@ import { createRoot } from 'react-dom/client'; import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet'; export default function App() { - return (); + return (); } const root = createRoot(document.getElementById('root')); root.render(); From 26cc070181dea181b9f9a2d0054b3c3991ab1ddf Mon Sep 17 00:00:00 2001 From: MOHANRAJSF4991 Date: Fri, 24 Apr 2026 14:07:22 +0530 Subject: [PATCH 015/337] 1021043: refined the getting stated ug content in core --- .../ASP-NET-CORE/getting-started-core.md | 3 +++ .../getting-started-core/spreadsheet.cs | 14 +++++++++++++- .../asp-net-core/getting-started-core/tagHelper | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/getting-started-core.md b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/getting-started-core.md index 752280b7aa..638d21f263 100644 --- a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/getting-started-core.md +++ b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/getting-started-core.md @@ -93,6 +93,9 @@ Now, add the Syncfusion® ASP.NET Core Sprea {% highlight cshtml tabtitle="CSHTML" %} {% include code-snippet/spreadsheet/asp-net-core/getting-started-core/tagHelper %} {% endhighlight %} +{% highlight c# tabtitle="OpenController.cs" %} +{% include code-snippet/spreadsheet/asp-net-core/getting-started-core/spreadsheet.cs %} +{% endhighlight %} {% endtabs %} Press Ctrl+F5 (Windows) or +F5 (macOS) to run the app. Then, the Syncfusion® ASP.NET Core Spreadsheet control will be rendered in the default web browser. diff --git a/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/spreadsheet.cs b/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/spreadsheet.cs index 3a3300bf82..fd28fce057 100644 --- a/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/spreadsheet.cs +++ b/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/spreadsheet.cs @@ -1,4 +1,16 @@ public IActionResult Index() { return View(); -} \ No newline at end of file +} + +public IActionResult Open(IFormCollection openRequest) +{ + OpenRequest open = new OpenRequest(); + open.File = openRequest.Files[0]; + return Content(Workbook.Open(open)); +} + +public IActionResult Save(SaveSettings saveSettings) +{ + return Workbook.Save(saveSettings); +} diff --git a/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/tagHelper b/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/tagHelper index c6d8de4136..d5aa115a85 100644 --- a/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/tagHelper +++ b/Document-Processing/code-snippet/spreadsheet/asp-net-core/getting-started-core/tagHelper @@ -1,3 +1,3 @@ - + \ No newline at end of file From b0ea26ed8c8df013d6e2c5418926fa9d7617222b Mon Sep 17 00:00:00 2001 From: MOHANRAJSF4991 Date: Fri, 24 Apr 2026 14:11:37 +0530 Subject: [PATCH 016/337] 1021043: refined the getting started ug content in mvc platform --- .../Excel/Spreadsheet/ASP-NET-MVC/getting-started-mvc.md | 3 +++ .../spreadsheet/asp-net-mvc/getting-started-mvc/razor | 2 +- .../asp-net-mvc/getting-started-mvc/spreadsheet.cs | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/getting-started-mvc.md b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/getting-started-mvc.md index 2a4078d2a7..51b0bd1d1d 100644 --- a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/getting-started-mvc.md +++ b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/getting-started-mvc.md @@ -90,6 +90,9 @@ Now, add the Syncfusion® ASP.NET MVC Spread {% highlight razor tabtitle="CSHTML" %} {% include code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/razor %} {% endhighlight %} +{% highlight c# tabtitle="OpenController.cs" %} +{% include code-snippet/spreadsheet/asp-net-mvc/getting-started-core/spreadsheet.cs %} +{% endhighlight %} {% endtabs %} Press Ctrl+F5 (Windows) or +F5 (macOS) to run the app. Then, the Syncfusion® ASP.NET MVC Spreadsheet control will be rendered in the default web browser. diff --git a/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/razor b/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/razor index 0ac89bec32..518d4a15a4 100644 --- a/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/razor +++ b/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/razor @@ -1 +1 @@ -@Html.EJS().Spreadsheet("spreadsheet").Render() \ No newline at end of file +@Html.EJS().Spreadsheet("spreadsheet").OpenUrl("Home/Open").SaveUrl("Home/Save").Render() \ No newline at end of file diff --git a/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/spreadsheet.cs b/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/spreadsheet.cs index 2d555a9aad..991fdbfe71 100644 --- a/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/spreadsheet.cs +++ b/Document-Processing/code-snippet/spreadsheet/asp-net-mvc/getting-started-mvc/spreadsheet.cs @@ -1,4 +1,13 @@ public ActionResult Index() { return View(); +} +public ActionResult Open(OpenRequest openRequest) +{ + return Content(Workbook.Open(openRequest)); +} + +public void Save(SaveSettings saveSettings) +{ + Workbook.Save(saveSettings); } \ No newline at end of file From c8462b840a9872443297638ffe7743251e8c18d0 Mon Sep 17 00:00:00 2001 From: PrakashRajKumar Date: Fri, 24 Apr 2026 14:15:32 +0530 Subject: [PATCH 017/337] 000000: Updated the review correction. --- .../Blazor/getting-started-webapp.md | 65 ++++++++++++------ .../Spreadsheet/Blazor/getting-started.md | 36 +++++----- .../Blazor/images/blazor-spreadsheet.png | Bin 122912 -> 0 bytes 3 files changed, 63 insertions(+), 38 deletions(-) delete mode 100644 Document-Processing/Excel/Spreadsheet/Blazor/images/blazor-spreadsheet.png diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md b/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md index 4c722edb16..9acf7937d2 100644 --- a/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md +++ b/Document-Processing/Excel/Spreadsheet/Blazor/getting-started-webapp.md @@ -19,9 +19,30 @@ This section briefly explains how to include the [Blazor Spreadsheet](https://ww * [System requirements for Blazor components](https://blazor.syncfusion.com/documentation/system-requirements) -## Create a new Blazor Web App in Visual Studio +## Create a New Blazor Web App in Visual Studio -Create a **Blazor Web App** using Visual Studio via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio). For detailed instructions, refer to the [Blazor Web App Getting Started](https://blazor.syncfusion.com/documentation/getting-started/blazor-web-app) documentation. +Create a **Blazor Web App** using Visual Studio 2022 via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio). + +Need to configure the corresponding [Interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [Interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) while creating a Blazor Web Application. + +## Install Syncfusion® Blazor Spreadsheet and Themes NuGet Packages in the App + +To add **Syncfusion Blazor Spreadsheet** component in the app, open the NuGet package manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*), search and install [Syncfusion.Blazor.Spreadsheet](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet) and [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/). + +If you utilize `WebAssembly or Auto` render modes in the Blazor Web App need to be install Syncfusion® Blazor components NuGet packages within the client project. + +Alternatively, you can utilize the following package manager command to achieve the same. + +{% tabs %} +{% highlight C# tabtitle="Package Manager" %} + +Install-Package Syncfusion.Blazor.Spreadsheet -Version {{ site.releaseversion }} +Install-Package Syncfusion.Blazor.Themes -Version {{ site.releaseversion }} + +{% endhighlight %} +{% endtabs %} + +N> Syncfusion® Blazor components are available in [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). Refer to [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) topic for available NuGet packages list with component details. {% endtabcontent %} @@ -31,11 +52,13 @@ Create a **Blazor Web App** using Visual Studio via [Microsoft Templates](https: * [System requirements for Blazor components](https://blazor.syncfusion.com/documentation/system-requirements) -## Create a new Blazor Web App in Visual Studio Code +## Create a New Blazor Web App in Visual Studio Code -Create a **Blazor Web App** using Visual Studio Code via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project). For detailed instructions, refer to the [Blazor Web App Getting Started](https://blazor.syncfusion.com/documentation/getting-started/blazor-web-app?tabcontent=visual-studio-code) documentation. +Create a **Blazor Web App** using Visual Studio Code via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project). -For example, in a Blazor Web App with the `Auto` interactive render mode, use the following commands in the integrated terminal (Ctrl+`): +Need to configure the corresponding [Interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [Interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) while creating a Blazor Web Application. + +For example, in a Blazor Web App with the `Auto` interactive render mode, use the following commands. {% tabs %} {% highlight c# tabtitle="Blazor Web App" %} @@ -47,31 +70,33 @@ cd BlazorWebApp.Client {% endhighlight %} {% endtabs %} -{% endtabcontent %} - -{% endtabcontents %} - -N> Configure the appropriate [Interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [Interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vs) while creating a Blazor Web App. For detailed information, refer to the [interactive render mode documentation](https://blazor.syncfusion.com/documentation/common/interactive-render-mode). +N> For more information on creating a **Blazor Web App** with various interactive modes and locations, refer to this [link](./getting-started/blazor-web-app?tabcontent=visual-studio-code#render-interactive-modes). -## Install Syncfusion® Blazor packages +## Install Syncfusion® Blazor Spreadsheet and Themes NuGet in the App -Install [Syncfusion.Blazor.Spreadsheet](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet) and [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/) NuGet packages in your project using the NuGet Package Manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*). +If you utilize `WebAssembly` or `Auto` render modes in the Blazor Web App need to be install Syncfusion® Blazor components NuGet packages within the client project. -Alternatively, run the following commands in the Package Manager Console to achieve the same. +* Press Ctrl+` to open the integrated terminal in Visual Studio Code. +* Ensure you’re in the project root directory where your `.csproj` file is located. +* Run the following command to install a [Syncfusion.Blazor.Spreadsheet](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet) and [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/) NuGet package and ensure all dependencies are installed. {% tabs %} -{% highlight C# tabtitle="Package Manager" %} + +{% highlight c# tabtitle="Package Manager" %} dotnet add package Syncfusion.Blazor.Spreadsheet -v {{ site.releaseversion }} dotnet add package Syncfusion.Blazor.Themes -v {{ site.releaseversion }} dotnet restore {% endhighlight %} + {% endtabs %} -If using the `WebAssembly` or `Auto` render modes in the Blazor Web App, install these packages in the client project. +N> Syncfusion® Blazor components are available in [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). Refer to [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) topic for available NuGet packages list with component details. + +{% endtabcontent %} -N> All Syncfusion Blazor packages are available on [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). See the [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) topic for details. +{% endtabcontents %} ## Add import namespaces @@ -116,7 +141,7 @@ The theme stylesheet and script can be accessed from NuGet through [Static Web A ``` -N> Check out the [Blazor Themes](https://blazor.syncfusion.com/documentation/appearance/themes) topic to discover various methods ([Static Web Assets](https://blazor.syncfusion.com/documentation/appearance/themes#static-web-assets), [CDN](https://blazor.syncfusion.com/documentation/appearance/themes#cdn-reference), and [CRG](https://blazor.syncfusion.com/documentation/common/custom-resource-generator)) for referencing themes in your Blazor application. Also, check out the [Adding Script Reference](https://blazor.syncfusion.com/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your Blazor application. +N> Check out the [Blazor Themes](https://blazor.syncfusion.com/documentation/appearance/themes) topic to explore supported ways (such as static assets, CDN, and CRG) to apply themes in your Blazor application. Also, check out the [Adding Script Reference](https://blazor.syncfusion.com/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your Blazor application. ## Add Syncfusion® Blazor Spreadsheet component @@ -157,11 +182,9 @@ N> If the **Interactivity Location** is set to `Global` with `Auto` or `WebAssem * Press Ctrl+F5 (Windows) or +F5 (macOS) to launch the application. This will render the Syncfusion Blazor Spreadsheet in your default web browser. -{% previewsample "https://blazorplayground.syncfusion.com/embed/VNBHtJVTrpaSJNaM?appbar=true&editor=true&result=true&errorlist=true&theme=fluent2" backgroundimage "[Blazor Spreadsheet](./images/blazor-spreadsheet.png)" %} - ## See Also -* [Blazor Spreadsheet Overview](overview.md) -* [Open and Save](open-and-save.md) +* [Blazor Spreadsheet Overview](overview) +* [Open and Save](open-and-save) N> You can also explore our [Blazor Spreadsheet Example](https://document.syncfusion.com/demos/spreadsheet-editor/blazor-server/spreadsheet/overview) that shows you how to render and configure the Spreadsheet. \ No newline at end of file diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/getting-started.md b/Document-Processing/Excel/Spreadsheet/Blazor/getting-started.md index 427a533bf3..ef9a094172 100644 --- a/Document-Processing/Excel/Spreadsheet/Blazor/getting-started.md +++ b/Document-Processing/Excel/Spreadsheet/Blazor/getting-started.md @@ -9,7 +9,7 @@ documentation: ug # Getting Started with Blazor Spreadsheet Component -This section briefly explains about how to include [Blazor Spreadsheet](https://www.syncfusion.com/blazor-components/blazor-spreadsheet) component in your Blazor WebAssembly App using [Visual Studio](https://visualstudio.microsoft.com/vs/) and Visual Studio Code. +This section briefly explains how to include [Blazor Spreadsheet](https://www.syncfusion.com/blazor-components/blazor-spreadsheet) component in your Blazor WebAssembly App using [Visual Studio](https://visualstudio.microsoft.com/vs/) and [Visual Studio Code](https://code.visualstudio.com/). {% tabcontents %} @@ -87,12 +87,12 @@ N> Syncfusion® Blazor components are availa {% endtabcontents %} -## Register Syncfusion® Blazor Service +## Add import namespaces -Open **~/_Imports.razor** file and import the `Syncfusion.Blazor` and `Syncfusion.Blazor.Spreadsheet` namespace. +After the packages are installed, open the **~/_Imports.razor** file and import the `Syncfusion.Blazor` and `Syncfusion.Blazor.Spreadsheet` namespaces. {% tabs %} -{% highlight razor tabtitle="~/_Imports.razor" %} +{% highlight C# tabtitle="~/_Imports.razor" %} @using Syncfusion.Blazor @using Syncfusion.Blazor.Spreadsheet @@ -100,23 +100,17 @@ Open **~/_Imports.razor** file and import the `Syncfusion.Blazor` and `Syncfusio {% endhighlight %} {% endtabs %} -Now, register the Syncfusion® Blazor Service in the **~/Program.cs** file of your Blazor WebAssembly App. +## Register Syncfusion® Blazor Service + +Register the Syncfusion Blazor service in the **~/Program.cs** file of your Blazor WebAssembly App. {% tabs %} {% highlight C# tabtitle="~/Program.cs" hl_lines="3 11" %} -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +.... using Syncfusion.Blazor; - -var builder = WebAssemblyHostBuilder.CreateDefault(args); -builder.RootComponents.Add("#app"); -builder.RootComponents.Add("head::after"); - -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - +.... builder.Services.AddSyncfusionBlazor(); -await builder.Build().RunAsync(); .... {% endhighlight %} @@ -133,7 +127,8 @@ The theme stylesheet and script can be accessed from NuGet through [Static Web A ``` -N> Check out the [Blazor Themes](https://blazor.syncfusion.com/documentation/appearance/themes) topic to discover various methods ([Static Web Assets](https://blazor.syncfusion.com/documentation/appearance/themes#static-web-assets), [CDN](https://blazor.syncfusion.com/documentation/appearance/themes#cdn-reference), and [CRG](https://blazor.syncfusion.com/documentation/common/custom-resource-generator)) for referencing themes in your Blazor application. Also, check out the [Adding Script Reference](https://blazor.syncfusion.com/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your Blazor application. + +N> Check out the [Blazor Themes](https://blazor.syncfusion.com/documentation/appearance/themes) topic to explore supported ways (such as static assets, CDN, and CRG) to apply themes in your Blazor application. Also, check out the [Adding Script Reference](https://blazor.syncfusion.com/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your Blazor application. ## Add Blazor Spreadsheet component @@ -142,7 +137,7 @@ Add the Syncfusion® Blazor Spreadsheet comp {% tabs %} {% highlight razor %} -Note: Due to browser-level restrictions in WebAssembly (WASM), the method File.ReadAllBytes is not supported. As a result, the sample implementations provided use a Base64-encoded Excel file to import data. This approach ensures compatibility with WASM environments, where direct file system access is limited. Instead of reading the file from disk, the Excel content is embedded or passed as a Base64 string, which is then decoded within the application to simulate file input. This method allows seamless data import while adhering to the constraints of the WebAssembly runtime. +Note: Due to WebAssembly (WASM) browser restrictions, File.ReadAllBytes is not supported. Therefore, the samples use a Base64‑encoded Excel file, which is decoded at runtime to load data without direct file system access. @@ -163,3 +158,10 @@ Note: Due to browser-level restrictions in WebAssembly (WASM), the method File.R {% endtabs %} * Press Ctrl+F5 (Windows) or +F5 (macOS) to launch the application. This will render the Syncfusion Blazor Spreadsheet in your default web browser. + +## See Also + +* [Blazor Spreadsheet Overview](overview.md) +* [Open and Save](open-and-save.md) + +N> You can also explore our [Blazor Spreadsheet Example](https://document.syncfusion.com/demos/spreadsheet-editor/blazor-wasm/spreadsheet/overview) that shows you how to render and configure the Spreadsheet. diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/images/blazor-spreadsheet.png b/Document-Processing/Excel/Spreadsheet/Blazor/images/blazor-spreadsheet.png deleted file mode 100644 index d84b6efd46c08cddc7df97b8b65c3816088d5230..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122912 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 Lj~+-?GV%Rig)bqp From d33e2a8b71bac97c9408f207de1596a0ea2d717f Mon Sep 17 00:00:00 2001 From: gopinathan-sf4977 Date: Fri, 24 Apr 2026 14:38:34 +0530 Subject: [PATCH 018/337] 1019524: Updated the Spreadsheet Angular Getting started --- .../Spreadsheet/Angular/getting-started.md | 149 +++++------------- .../angular/spreadsheet-cs1/src/app.ts | 2 +- 2 files changed, 39 insertions(+), 112 deletions(-) diff --git a/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md b/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md index 3dd6d909de..4a28461474 100644 --- a/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md +++ b/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md @@ -3,103 +3,43 @@ layout: post title: Getting started with Angular Spreadsheet component | Syncfusion description: Checkout and learn here all about getting started with Syncfusion Essential Angular Spreadsheet component, it's elements, and more details. platform: document-processing -control: Getting started +control: Getting started documentation: ug --- -# Getting started with Angular Spreadsheet component +# Getting Started with Angular Spreadsheet component -This section explains the steps to create a simple Spreadsheet component with basic features in an Angular environment. - -To get start quickly with Angular Spreadsheet using CLI, you can check on this video: - -{% youtube "https://www.youtube.com/watch?v=2Ozwe37X-7Q" %} +This section explains how to create a simple Angular application and add the [Syncfusion Angular Spreadsheet](https://www.syncfusion.com/spreadsheet-editor-sdk/angular-spreadsheet-editor) component with the minimum required setup. ## Prerequisites -Ensure your development environment meets the [`System Requirements for Syncfusion® Angular Spreadsheet component`](https://help.syncfusion.com/document-processing/system-requirements). - -## Dependencies - -The following list of dependencies are required to use the Spreadsheet component in your application. - -```js - |-- @syncfusion/ej2-angular-spreadsheet - |-- @syncfusion/ej2-angular-base - |-- @syncfusion/ej2-spreadsheet - |-- @syncfusion/ej2-base - |-- @syncfusion/ej2-dropdowns - |-- @syncfusion/ej2-navigations - |-- @syncfusion/ej2-grids -``` - -## Setup Angular Environment - -You can use [`Angular CLI`](https://github.com/angular/angular-cli) to setup your Angular applications. To install Angular CLI use the following command. - -```bash -npm install -g @angular/cli -``` +[System requirements for Syncfusion® Angular components](https://ej2.syncfusion.com/angular/documentation/system-requirement) ## Create an Angular Application +Use the [`Angular CLI`](https://angular.dev/installation) to create a new Angular application. It is the official and easiest way to get started with Angular. -Start a new Angular application using below Angular CLI command. +To create a new Angular application, run the following commands. -```bash -ng new my-app ``` - -This command prompts you to configure settings such as whether to include Angular routing and which stylesheet format to use. - -```bash - -? Which stylesheet format would you like to use? (Use arrow keys) -> CSS [ https://developer.mozilla.org/docs/Web/CSS ] - Sass (SCSS) [ https://sass-lang.com/documentation/syntax#scss ] - Sass (Indented) [ https://sass-lang.com/documentation/syntax#the-indented-syntax ] - Less [ http://lesscss.org ] - +npm install -g @angular/cli +ng new spreadsheet-app +cd spreadsheet-app ``` -By default, it will create a CSS-based application. - -During project setup, when prompted for the Server-side rendering (SSR) option, choose the appropriate configuration. - -![Spreadsheet showing a comment](./images/gettingstarted_SSR.png) - -Select the required AI tool or ‘none’ if you do not need any AI tool. +## Install the Syncfusion® Angular Spreadsheet package -![Spreadsheet showing a comment](./images/gettingstarted_AI.png) +Currently, Syncfusion® provides two types of package structures for Angular components, +1. Ivy library distribution package [format](https://v17.angular.io/guide/angular-package-format#angular-package-format): -Navigate to the created application folder: +Install the [Angular](https://www.npmjs.com/package/@syncfusion/ej2-angular-spreadsheet) package from npm using the following command: -```bash -cd my-app ``` - -## Installing Syncfusion® Spreadsheet package - -Syncfusion® packages are distributed in npm as `@syncfusion` scoped packages. You can get all the Angular Syncfusion® package from npm [link](https://www.npmjs.com/search?q=%40syncfusion%2Fej2-angular-). - -Currently, Syncfusion® provides two types of package structures for Angular components, -1. Ivy library distribution package [format](https://v17.angular.io/guide/angular-package-format#angular-package-format) -2. Angular compatibility compiler(Angular’s legacy compilation and rendering pipeline) package. - -### Ivy library distribution package - -Syncfusion® Angular packages(`>=20.2.36`) has been moved to the Ivy distribution to support the Angular [Ivy](https://docs.angular.lat/guide/ivy) rendering engine and the package are compatible with Angular version 12 and above. To download the package use the below command. - -Add [`@syncfusion/ej2-angular-spreadsheet`](https://www.npmjs.com/package/@syncfusion/ej2-angular-spreadsheet/v/20.2.38) package to the application. - -```bash npm install @syncfusion/ej2-angular-spreadsheet --save ``` -### Angular compatibility compiled package(ngcc) - -For Angular version below 12, you can use the legacy (ngcc) package of the Syncfusion® Angular components. To download the `ngcc` package use the below. +2. Angular compatibility compiler(Angular’s legacy compilation and rendering pipeline) package. -Add [`@syncfusion/ej2-angular-spreadsheet@ngcc`](https://www.npmjs.com/package/@syncfusion/ej2-angular-spreadsheet/v/20.2.38-ngcc) package to the application. +For Angular version below 12, you can use the legacy (ngcc) package of the Syncfusion® [Angular Spreadsheet](https://www.npmjs.com/package/@syncfusion/ej2-angular-spreadsheet/v/33.2.3-ngcc). To download the `ngcc` package use the below. ```bash npm install @syncfusion/ej2-angular-spreadsheet@ngcc --save @@ -108,21 +48,14 @@ npm install @syncfusion/ej2-angular-spreadsheet@ngcc --save To mention the ngcc package in the `package.json` file, add the suffix `-ngcc` with the package version as below. ```bash -@syncfusion/ej2-angular-spreadsheet:"20.2.38-ngcc" +@syncfusion/ej2-angular-spreadsheet:"33.2.3-ngcc" ``` -The above command does the following configuration to your Angular app, - - * Adds `@syncfusion/ej2-angular-spreadsheet` package and its peer dependencies to your `package.json` file. - * Imports the `SpreadsheetAllModule` in your application module `app.module.ts`. - * Registers the Syncfusion® UI default theme (material) in the `angular.json` file. - >Note: If the ngcc tag is not specified while installing the package, the Ivy Library Package will be installed and this package will throw a warning. -## Adding CSS reference +## Add CSS reference -The following CSS files are available in `../node_modules/@syncfusion` package folder. -This can be referenced in `[src/styles.css]` using following code. +Add the following style references to the `[src/styles.css]` file. ```css @import '../node_modules/@syncfusion/ej2-base/styles/material.css'; @@ -137,25 +70,21 @@ This can be referenced in `[src/styles.css]` using following code. @import '../node_modules/@syncfusion/ej2-grids/styles/material.css'; ``` -## Add Spreadsheet component +## Add the Syncfusion® Angular Spreadsheet component to the application Modify the template in [src/app/app.ts] file to render the spreadsheet component. Add the Angular Spreadsheet by using `` selector in template section of the `app.ts` file. -```typescript -import { Component } from '@angular/core'; -import { SpreadsheetAllModule } from '@syncfusion/ej2-angular-spreadsheet' +{% tabs %} +{% highlight ts tabtitle="app.ts" %} +{% include code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts %} +{% endhighlight %} -@Component({ - imports: [ - SpreadsheetAllModule - ], - selector: 'app-root', - // specifies the template string for the Spreadsheet component - template: ` ` -}) -export class AppComponent { } +{% highlight ts tabtitle="main.ts" %} +{% include code-snippet/spreadsheet/angular/spreadsheet-cs1/src/main.ts %} +{% endhighlight %} +{% endtabs %} -``` +> **Note:** The [`openUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openurl) and [`saveUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#saveurl) endpoints used in this example are provided only for demonstration purposes. For development and production use, we strongly recommend configuring your own local or hosted web service for the Open and Save actions instead of relying on the online demo service. For more information, refer to the [`Blog Post`](https://www.syncfusion.com/blogs/post/host-spreadsheet-open-and-save-services). ## Run the application @@ -166,22 +95,20 @@ ng serve ``` The following example shows a basic Spreadsheet component - -{% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts %} -{% endhighlight %} - -{% highlight ts tabtitle="main.ts" %} -{% include code-snippet/spreadsheet/angular/spreadsheet-cs1/src/main.ts %} -{% endhighlight %} -{% endtabs %} - + {% previewsample "/document-processing/samples/spreadsheet/angular/spreadsheet-cs1" %} > You can refer to our [Angular Spreadsheet](https://www.syncfusion.com/spreadsheet-editor-sdk/angular-spreadsheet-editor) feature tour page for its groundbreaking feature representations. You can also explore our [Angular Spreadsheet example](https://document.syncfusion.com/demos/spreadsheet-editor/angular/#/bootstrap5/spreadsheet/default) that shows you how present and manipulate data, including editing, formulas, formatting, importing, and exporting. +## Video tutorial + +To get start quickly with Angular Spreadsheet using CLI, you can check on this video: + +{% youtube "https://www.youtube.com/watch?v=2Ozwe37X-7Q" %} + ## See Also * [Data Binding](./data-binding) -* [Open and Save](./open-save) \ No newline at end of file +* [Open and Save](./open-save) +* [Save Excel files](./save-excel-files) +* [Web Services](./web-services/webservice-overview) \ No newline at end of file diff --git a/Document-Processing/code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts b/Document-Processing/code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts index 8786698d57..2098ee7397 100644 --- a/Document-Processing/code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts +++ b/Document-Processing/code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts @@ -10,7 +10,7 @@ imports: [ standalone: true, selector: 'app-root', - template: ' ' + template: ' ' }) export class AppComponent { } From f2c67bf3a5b6e0bee8a303e6bb8b34571de7aeef Mon Sep 17 00:00:00 2001 From: NithishkumarRavikumar Date: Fri, 24 Apr 2026 14:48:46 +0530 Subject: [PATCH 019/337] 1019334: Updated getting started contents for vue --- .../Excel/Spreadsheet/Vue/getting-started.md | 132 ++++------ .../Spreadsheet/Vue/vue-3-getting-started.md | 228 ++++-------------- .../getting-started-cs1/app-composition.vue | 6 +- .../vue/getting-started-cs1/app.vue | 16 +- 4 files changed, 109 insertions(+), 273 deletions(-) diff --git a/Document-Processing/Excel/Spreadsheet/Vue/getting-started.md b/Document-Processing/Excel/Spreadsheet/Vue/getting-started.md index daf90cb546..91a8c5e889 100644 --- a/Document-Processing/Excel/Spreadsheet/Vue/getting-started.md +++ b/Document-Processing/Excel/Spreadsheet/Vue/getting-started.md @@ -2,7 +2,6 @@ layout: post title: Getting started with Vue Spreadsheet component | Syncfusion description: Checkout and learn about Getting started with Vue Spreadsheet component of Syncfusion Essential JS 2 and more details. -control: Getting started platform: document-processing documentation: ug --- @@ -13,67 +12,44 @@ This article provides a step-by-step guide for setting up a Vue 2 project using ## Prerequisites -[System requirements for Syncfusion® Vue UI components](https://ej2.syncfusion.com/vue/documentation/system-requirements/) +[System requirements for Syncfusion® Vue components](https://ej2.syncfusion.com/vue/documentation/system-requirements/) -## Dependencies +## Create a Vue application -The following list of dependencies are required to use the Spreadsheet component in your application: - -```js -|-- @syncfusion/ej2-vue-spreadsheet - |-- @syncfusion/ej2-vue-base - |-- @syncfusion/ej2-base - |-- @syncfusion/ej2-dropdowns - |-- @syncfusion/ej2-navigations - |-- @syncfusion/ej2-grids -``` +To generate a Vue 2 project using Vue-CLI, use the [vue create](https://cli.vuejs.org/#getting-started) command. Follow these steps to install Vue CLI and create a new project: -## Setting up the Vue 2 project +To create a new Vue application, run the following command: -To generate a Vue 2 project using Vue-CLI, use the [vue create](https://cli.vuejs.org/#getting-started) command. Follow these steps to install Vue CLI and create a new project: +{% tabs %} +{% highlight js tabtitle="npm" %} -```bash npm install -g @vue/cli vue create quickstart cd quickstart npm run serve -``` -or +{% endhighlight %} +{% highlight ts tabtitle="yarn" %} -```bash yarn global add @vue/cli vue create quickstart cd quickstart yarn run serve -``` - -When creating a new project, choose the option `Default ([Vue 2] babel, eslint)` from the menu. -![Vue 2 project](./images/vue2-terminal.png) - -Once the `quickstart` project is set up with default settings, proceed to add Syncfusion® components to the project. - -## Add Syncfusion® Vue packages +{% endhighlight %} +{% endtabs %} -Syncfusion® packages are available at [npmjs.com](https://www.npmjs.com/search?q=ej2-vue). To use Vue components, install the required npm package. +## Install the Syncfusion® Vue Spreadsheet package -This article uses the [Vue Spreadsheet component](https://www.syncfusion.com/spreadsheet-editor-sdk/vue-spreadsheet-editor) as an example. Install the `@syncfusion/ej2-vue-spreadsheet` package by running the following command: +Install the [Vue Spreadsheet](https://www.npmjs.com/package/@syncfusion/ej2-vue-spreadsheet) package from npm using the following command: -```bash -npm install @syncfusion/ej2-vue-spreadsheet --save ``` -or - -```bash -yarn add @syncfusion/ej2-vue-spreadsheet +npm install @syncfusion/ej2-vue-spreadsheet --save ``` -## Import Syncfusion® CSS styles - -You can import themes for the Syncfusion® Vue component in various ways, such as using CSS or SASS styles from npm packages, CDN, [CRG](https://ej2.syncfusion.com/javascript/documentation/common/custom-resource-generator/) and [Theme Studio](https://ej2.syncfusion.com/vue/documentation/appearance/theme-studio/). Refer to [themes topic](https://ej2.syncfusion.com/vue/documentation/appearance/theme/) to know more about built-in themes and different ways to refer to themes in a Vue project. +## Add CSS references -In this article, the `Material` theme is applied using CSS styles, which are available in installed packages. The necessary `Material` CSS styles for the Spreadsheet component and its dependents were imported into the ` {% endhighlight %} {% endtabs %} -> The order of importing CSS styles should be in line with its dependency graph. +## Note -> For an enhanced UI experience with the Vue spreadsheet component, kindly remove the basic styles provided in the `scr/styles.css` file. This will help avoid potential styling conflicts and ensure a cleaner design layout. +Refer to [themes topic](https://ej2.syncfusion.com/vue/documentation/appearance/theme/) to know more about built-in themes and different ways to refer to themes in a Vue project. ## Add Syncfusion® Vue component Follow the below steps to add the Vue Spreadsheet component using `Composition API` or `Options API`: - 1.First, import and register the Spreadsheet component and its child directives in the `script` section of the **src/App.vue** file. If you are using the `Composition API`, you should add the `setup` attribute to the `script` tag to indicate that Vue will be using the `Composition API`. - -{% tabs %} -{% highlight html tabtitle="Composition API (~/src/App.vue)" %} - - - -{% endhighlight %} -{% highlight html tabtitle="Options API (~/src/App.vue)" %} - - - -{% endhighlight %} -{% endtabs %} +1.First, import and register the Spreadsheet component and its child directives in the `script` section of the **src/App.vue** file. If you are using the `Composition API`, you should add the `setup` attribute to the `script` tag to indicate that Vue will be using the `Composition API`. 2.In the `template` section, define the Spreadsheet component with sheets directives. Sheet directives are used to define the sheet definition for the Spreadsheet component. -{% tabs %} -{% highlight html tabtitle="~/src/App.vue" %} - - - -{% endhighlight %} -{% endtabs %} - 3.Declare the values for the `dataSource` property in the `script` section. -{% tabs %} -{% highlight html tabtitle="Composition API (~/src/App.vue)" %} - - - -{% endhighlight %} -{% highlight html tabtitle="Options API (~/src/App.vue)" %} - - - -{% endhighlight %} -{% endtabs %} - Here is the summarized code for the above steps in the **src/App.vue** file: {% tabs %} {% highlight html tabtitle="Composition API (~/src/App.vue)" %} @@ -67,15 +66,46 @@ Add the following style references. ## Add the Syncfusion® Vue Spreadsheet component to the application -Import and register the Spreadsheet component in the `script` section of **src/App.vue**. If you use the `Composition API`, add the `setup` attribute to the `script` tag. Then, define the component in the `template` section. +Import and register the Spreadsheet component directives in the `script` section of **src/App.vue**. If you use the `Composition API`, add the `setup` attribute to the `script` tag. Then, define the component in the `template` section with sheets directives. {% tabs %} {% highlight html tabtitle="Composition API (~/src/App.vue)" %} -{% include code-snippet/spreadsheet/vue/getting-started-cs1/app-composition.vue %} +{% raw %} + + + +{% endraw %} {% endhighlight %} - {% highlight html tabtitle="Options API (~/src/App.vue)" %} -{% include code-snippet/spreadsheet/vue/getting-started-cs1/app.vue %} +{% raw %} + + + +{% endraw %} {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/Excel/Spreadsheet/Vue/vue-3-getting-started.md b/Document-Processing/Excel/Spreadsheet/Vue/vue-3-getting-started.md index 58fbf62c0e..6d7334cc94 100644 --- a/Document-Processing/Excel/Spreadsheet/Vue/vue-3-getting-started.md +++ b/Document-Processing/Excel/Spreadsheet/Vue/vue-3-getting-started.md @@ -24,7 +24,6 @@ To create a new Vue application, run one of the following commands. ``` npm create vite@latest cd my-project -npm install ``` ## Install the Syncfusion® Vue Spreadsheet package @@ -43,14 +42,14 @@ Add the following style references. {% highlight html tabtitle="~/src/App.vue" %} @@ -61,16 +60,11 @@ Add the following style references. ## Add Syncfusion® Vue component to the application -Follow the below steps to add the Vue Spreadsheet component using `Composition API` or `Options API`: - -1.Import and register the Spreadsheet component in the `script` section of **src/App.vue**. If you use the `Composition API`, add the `setup` attribute to the `script` tag. Then, define the component in the `template` section. - -2.In the `template` section, define the Spreadsheet component with sheets directives. Sheet directives are used to define the sheet definition for the Spreadsheet component. - -3.Declare the values for the `dataSource` property in the `script` section. +Import and register the Spreadsheet component directives in the `script` section of **src/App.vue**. If you use the `Composition API`, add the `setup` attribute to the `script` tag. Then, define the component in the `template` section with sheets directives. {% tabs %} {% highlight html tabtitle="Composition API (~/src/App.vue)" %} +{% raw %}