ganttInstance = g} dataSource={timelineTemplateData} timelineTemplate={timelineTemplate}
splitterSettings={splitterSettings}
taskFields={taskFields} height='550px'
projectStartDate={projectStartDate} projectEndDate={projectEndDate} timelineSettings={timelineSettings}
- timelineTemplate={timelineTemplate} labelSettings={labelSettings} treeColumnIndex={1}>
+ labelSettings={labelSettings} treeColumnIndex={1}>
diff --git a/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/app/app.jsx b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/app/app.jsx
new file mode 100644
index 000000000..1e209dbdc
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/app/app.jsx
@@ -0,0 +1,98 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective, RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+
+function App() {
+ const data = [
+ {
+ "Customer Name": "Romona Heaslip",
+ "Model": "Taurus",
+ "Color": "Aquamarine",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "07/11/2015",
+ "Amount": "8529.22"
+ },
+ {
+ "Customer Name": "Clare Batterton",
+ "Model": "Sparrow",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/13/2016",
+ "Amount": "17866.19"
+ },
+ {
+ "Customer Name": "Eamon Traise",
+ "Model": "Grand Cherokee",
+ "Color": "Blue",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "09/04/2015",
+ "Amount": "13853.09"
+ },
+ {
+ "Customer Name": "Julius Gorner",
+ "Model": "GTO",
+ "Color": "Aquamarine",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/15/2017",
+ "Amount": "2338.74"
+ },
+ {
+ "Customer Name": "Jenna Schoolfield",
+ "Model": "LX",
+ "Color": "Yellow",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "10/08/2014",
+ "Amount": "9578.45"
+ },
+ {
+ "Customer Name": "Marylynne Harring",
+ "Model": "Catera",
+ "Color": "Green",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/01/2017",
+ "Amount": "19141.62"
+ },
+ {
+ "Customer Name": "Vilhelmina Leipelt",
+ "Model": "7 Series",
+ "Color": "Goldenrod",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/20/2015",
+ "Amount": "6543.30"
+ },
+ {
+ "Customer Name": "Barby Heisler",
+ "Model": "Corvette",
+ "Color": "Red",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "11/24/2014",
+ "Amount": "13035.06"
+ }
+ ];
+ const fieldsOrder = ['Customer Name', 'Payment Mode', 'Model', 'Color', 'Amount', 'Delivery Date'];
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/app/app.tsx b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/app/app.tsx
new file mode 100644
index 000000000..1b4775979
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/app/app.tsx
@@ -0,0 +1,98 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective, RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+
+function App() {
+ const data: object[] = [
+ {
+ "Customer Name": "Romona Heaslip",
+ "Model": "Taurus",
+ "Color": "Aquamarine",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "07/11/2015",
+ "Amount": "8529.22"
+ },
+ {
+ "Customer Name": "Clare Batterton",
+ "Model": "Sparrow",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/13/2016",
+ "Amount": "17866.19"
+ },
+ {
+ "Customer Name": "Eamon Traise",
+ "Model": "Grand Cherokee",
+ "Color": "Blue",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "09/04/2015",
+ "Amount": "13853.09"
+ },
+ {
+ "Customer Name": "Julius Gorner",
+ "Model": "GTO",
+ "Color": "Aquamarine",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/15/2017",
+ "Amount": "2338.74"
+ },
+ {
+ "Customer Name": "Jenna Schoolfield",
+ "Model": "LX",
+ "Color": "Yellow",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "10/08/2014",
+ "Amount": "9578.45"
+ },
+ {
+ "Customer Name": "Marylynne Harring",
+ "Model": "Catera",
+ "Color": "Green",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/01/2017",
+ "Amount": "19141.62"
+ },
+ {
+ "Customer Name": "Vilhelmina Leipelt",
+ "Model": "7 Series",
+ "Color": "Goldenrod",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/20/2015",
+ "Amount": "6543.30"
+ },
+ {
+ "Customer Name": "Barby Heisler",
+ "Model": "Corvette",
+ "Color": "Red",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "11/24/2014",
+ "Amount": "13035.06"
+ }
+ ];
+ const fieldsOrder: string[] = ['Customer Name', 'Payment Mode', 'Model', 'Color', 'Amount', 'Delivery Date'];
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/index.html b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/index.html
new file mode 100644
index 000000000..86f3c0bdd
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/systemjs.config.js
new file mode 100644
index 000000000..c9bd65c8d
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/field-mapping-cs1/systemjs.config.js
@@ -0,0 +1,58 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
+
+
+
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs1/app/app.jsx b/ej2-react/code-snippet/spreadsheet/note-cs1/app/app.jsx
new file mode 100644
index 000000000..98b3a19cd
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs1/app/app.jsx
@@ -0,0 +1,40 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs1/app/app.tsx b/ej2-react/code-snippet/spreadsheet/note-cs1/app/app.tsx
new file mode 100644
index 000000000..b28bec484
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs1/app/app.tsx
@@ -0,0 +1,40 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs1/app/datasource.jsx b/ej2-react/code-snippet/spreadsheet/note-cs1/app/datasource.jsx
new file mode 100644
index 000000000..4f71f20f3
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs1/app/datasource.jsx
@@ -0,0 +1,105 @@
+/**
+ * Merge cells data source
+ */
+export let data = [
+ {
+ 'Item Name': 'Casual Shoes',
+ 'Date': '02/14/2014',
+ 'Time': '11:34:32 AM',
+ 'Quantity': 10,
+ 'Price': 20,
+ 'Amount': 200,
+ 'Discount': 1,
+ 'Profit': 10,
+ },
+ {
+ 'Item Name': 'Sports Shoes',
+ 'Date': '06/11/2014',
+ 'Time': '05:56:32 AM',
+ 'Quantity': 20,
+ 'Price': 30,
+ 'Amount': 600,
+ 'Discount': 5,
+ 'Profit': 50,
+ },
+ {
+ 'Item Name': 'Formal Shoes',
+ 'Date': '07/27/2014',
+ 'Time': '03:32:44 AM',
+ 'Quantity': 20,
+ 'Price': 15,
+ 'Amount': 300,
+ 'Discount': 7,
+ 'Profit': 27,
+ },
+ {
+ 'Item Name': 'Sandals & Floaters',
+ 'Date': '11/21/2014',
+ 'Time': '06:23:54 AM',
+ 'Quantity': 15,
+ 'Price': 20,
+ 'Amount': 300,
+ 'Discount': 11,
+ 'Profit': 67,
+ },
+ {
+ 'Item Name': 'Flip- Flops & Slippers',
+ 'Date': '06/23/2014',
+ 'Time': '12:43:59 AM',
+ 'Quantity': 30,
+ 'Price': 10,
+ 'Amount': 300,
+ 'Discount': 10,
+ 'Profit': 70,
+ },
+ {
+ 'Item Name': 'Sneakers',
+ 'Date': '07/22/2014',
+ 'Time': '10:55:53 AM',
+ 'Quantity': 40,
+ 'Price': 20,
+ 'Amount': 800,
+ 'Discount': 13,
+ 'Profit': 66,
+ },
+ {
+ 'Item Name': 'Running Shoes',
+ 'Date': '02/04/2014',
+ 'Time': '03:44:34 AM',
+ 'Quantity': 20,
+ 'Price': 10,
+ 'Amount': 200,
+ 'Discount': 3,
+ 'Profit': 14,
+ },
+ {
+ 'Item Name': 'Loafers',
+ 'Date': '11/30/2014',
+ 'Time': '03:12:52 AM',
+ 'Quantity': 31,
+ 'Price': 10,
+ 'Amount': 310,
+ 'Discount': 6,
+ 'Profit': 29,
+ },
+ {
+ 'Item Name': 'Cricket Shoes',
+ 'Date': '07/09/2014',
+ 'Time': '11:32:14 AM',
+ 'Quantity': 41,
+ 'Price': 30,
+ 'Amount': 1210,
+ 'Discount': 12,
+ 'Profit': 166,
+ },
+ {
+ 'Item Name': 'T-Shirts',
+ 'Date': '10/31/2014',
+ 'Time': '12:01:44 AM',
+ 'Quantity': 50,
+ 'Price': 10,
+ 'Amount': 500,
+ 'Discount': 9,
+ 'Profit': 55,
+ }
+];
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs1/app/datasource.tsx b/ej2-react/code-snippet/spreadsheet/note-cs1/app/datasource.tsx
new file mode 100644
index 000000000..884b4cb55
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs1/app/datasource.tsx
@@ -0,0 +1,105 @@
+/**
+ * Note data source
+ */
+export let data: Object[] = [
+ {
+ 'Item Name': 'Casual Shoes',
+ 'Date': '02/14/2014',
+ 'Time': '11:34:32 AM',
+ 'Quantity': 10,
+ 'Price': 20,
+ 'Amount': 200,
+ 'Discount': 1,
+ 'Profit': 10,
+ },
+ {
+ 'Item Name': 'Sports Shoes',
+ 'Date': '06/11/2014',
+ 'Time': '05:56:32 AM',
+ 'Quantity': 20,
+ 'Price': 30,
+ 'Amount': 600,
+ 'Discount': 5,
+ 'Profit': 50,
+ },
+ {
+ 'Item Name': 'Formal Shoes',
+ 'Date': '07/27/2014',
+ 'Time': '03:32:44 AM',
+ 'Quantity': 20,
+ 'Price': 15,
+ 'Amount': 300,
+ 'Discount': 7,
+ 'Profit': 27,
+ },
+ {
+ 'Item Name': 'Sandals & Floaters',
+ 'Date': '11/21/2014',
+ 'Time': '06:23:54 AM',
+ 'Quantity': 15,
+ 'Price': 20,
+ 'Amount': 300,
+ 'Discount': 11,
+ 'Profit': 67,
+ },
+ {
+ 'Item Name': 'Flip- Flops & Slippers',
+ 'Date': '06/23/2014',
+ 'Time': '12:43:59 AM',
+ 'Quantity': 30,
+ 'Price': 10,
+ 'Amount': 300,
+ 'Discount': 10,
+ 'Profit': 70,
+ },
+ {
+ 'Item Name': 'Sneakers',
+ 'Date': '07/22/2014',
+ 'Time': '10:55:53 AM',
+ 'Quantity': 40,
+ 'Price': 20,
+ 'Amount': 800,
+ 'Discount': 13,
+ 'Profit': 66,
+ },
+ {
+ 'Item Name': 'Running Shoes',
+ 'Date': '02/04/2014',
+ 'Time': '03:44:34 AM',
+ 'Quantity': 20,
+ 'Price': 10,
+ 'Amount': 200,
+ 'Discount': 3,
+ 'Profit': 14,
+ },
+ {
+ 'Item Name': 'Loafers',
+ 'Date': '11/30/2014',
+ 'Time': '03:12:52 AM',
+ 'Quantity': 31,
+ 'Price': 10,
+ 'Amount': 310,
+ 'Discount': 6,
+ 'Profit': 29,
+ },
+ {
+ 'Item Name': 'Cricket Shoes',
+ 'Date': '07/09/2014',
+ 'Time': '11:32:14 AM',
+ 'Quantity': 41,
+ 'Price': 30,
+ 'Amount': 1210,
+ 'Discount': 12,
+ 'Profit': 166,
+ },
+ {
+ 'Item Name': 'T-Shirts',
+ 'Date': '10/31/2014',
+ 'Time': '12:01:44 AM',
+ 'Quantity': 50,
+ 'Price': 10,
+ 'Amount': 500,
+ 'Discount': 9,
+ 'Profit': 55,
+ }
+];
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs1/index.html b/ej2-react/code-snippet/spreadsheet/note-cs1/index.html
new file mode 100644
index 000000000..b278908a1
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs1/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs1/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/note-cs1/systemjs.config.js
new file mode 100644
index 000000000..503d4886b
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs1/systemjs.config.js
@@ -0,0 +1,55 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs2/app/app.jsx b/ej2-react/code-snippet/spreadsheet/note-cs2/app/app.jsx
new file mode 100644
index 000000000..dec28e86d
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs2/app/app.jsx
@@ -0,0 +1,40 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs2/app/app.tsx b/ej2-react/code-snippet/spreadsheet/note-cs2/app/app.tsx
new file mode 100644
index 000000000..b3cbee636
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs2/app/app.tsx
@@ -0,0 +1,40 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs2/app/datasource.jsx b/ej2-react/code-snippet/spreadsheet/note-cs2/app/datasource.jsx
new file mode 100644
index 000000000..4f71f20f3
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs2/app/datasource.jsx
@@ -0,0 +1,105 @@
+/**
+ * Merge cells data source
+ */
+export let data = [
+ {
+ 'Item Name': 'Casual Shoes',
+ 'Date': '02/14/2014',
+ 'Time': '11:34:32 AM',
+ 'Quantity': 10,
+ 'Price': 20,
+ 'Amount': 200,
+ 'Discount': 1,
+ 'Profit': 10,
+ },
+ {
+ 'Item Name': 'Sports Shoes',
+ 'Date': '06/11/2014',
+ 'Time': '05:56:32 AM',
+ 'Quantity': 20,
+ 'Price': 30,
+ 'Amount': 600,
+ 'Discount': 5,
+ 'Profit': 50,
+ },
+ {
+ 'Item Name': 'Formal Shoes',
+ 'Date': '07/27/2014',
+ 'Time': '03:32:44 AM',
+ 'Quantity': 20,
+ 'Price': 15,
+ 'Amount': 300,
+ 'Discount': 7,
+ 'Profit': 27,
+ },
+ {
+ 'Item Name': 'Sandals & Floaters',
+ 'Date': '11/21/2014',
+ 'Time': '06:23:54 AM',
+ 'Quantity': 15,
+ 'Price': 20,
+ 'Amount': 300,
+ 'Discount': 11,
+ 'Profit': 67,
+ },
+ {
+ 'Item Name': 'Flip- Flops & Slippers',
+ 'Date': '06/23/2014',
+ 'Time': '12:43:59 AM',
+ 'Quantity': 30,
+ 'Price': 10,
+ 'Amount': 300,
+ 'Discount': 10,
+ 'Profit': 70,
+ },
+ {
+ 'Item Name': 'Sneakers',
+ 'Date': '07/22/2014',
+ 'Time': '10:55:53 AM',
+ 'Quantity': 40,
+ 'Price': 20,
+ 'Amount': 800,
+ 'Discount': 13,
+ 'Profit': 66,
+ },
+ {
+ 'Item Name': 'Running Shoes',
+ 'Date': '02/04/2014',
+ 'Time': '03:44:34 AM',
+ 'Quantity': 20,
+ 'Price': 10,
+ 'Amount': 200,
+ 'Discount': 3,
+ 'Profit': 14,
+ },
+ {
+ 'Item Name': 'Loafers',
+ 'Date': '11/30/2014',
+ 'Time': '03:12:52 AM',
+ 'Quantity': 31,
+ 'Price': 10,
+ 'Amount': 310,
+ 'Discount': 6,
+ 'Profit': 29,
+ },
+ {
+ 'Item Name': 'Cricket Shoes',
+ 'Date': '07/09/2014',
+ 'Time': '11:32:14 AM',
+ 'Quantity': 41,
+ 'Price': 30,
+ 'Amount': 1210,
+ 'Discount': 12,
+ 'Profit': 166,
+ },
+ {
+ 'Item Name': 'T-Shirts',
+ 'Date': '10/31/2014',
+ 'Time': '12:01:44 AM',
+ 'Quantity': 50,
+ 'Price': 10,
+ 'Amount': 500,
+ 'Discount': 9,
+ 'Profit': 55,
+ }
+];
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs2/app/datasource.tsx b/ej2-react/code-snippet/spreadsheet/note-cs2/app/datasource.tsx
new file mode 100644
index 000000000..884b4cb55
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs2/app/datasource.tsx
@@ -0,0 +1,105 @@
+/**
+ * Note data source
+ */
+export let data: Object[] = [
+ {
+ 'Item Name': 'Casual Shoes',
+ 'Date': '02/14/2014',
+ 'Time': '11:34:32 AM',
+ 'Quantity': 10,
+ 'Price': 20,
+ 'Amount': 200,
+ 'Discount': 1,
+ 'Profit': 10,
+ },
+ {
+ 'Item Name': 'Sports Shoes',
+ 'Date': '06/11/2014',
+ 'Time': '05:56:32 AM',
+ 'Quantity': 20,
+ 'Price': 30,
+ 'Amount': 600,
+ 'Discount': 5,
+ 'Profit': 50,
+ },
+ {
+ 'Item Name': 'Formal Shoes',
+ 'Date': '07/27/2014',
+ 'Time': '03:32:44 AM',
+ 'Quantity': 20,
+ 'Price': 15,
+ 'Amount': 300,
+ 'Discount': 7,
+ 'Profit': 27,
+ },
+ {
+ 'Item Name': 'Sandals & Floaters',
+ 'Date': '11/21/2014',
+ 'Time': '06:23:54 AM',
+ 'Quantity': 15,
+ 'Price': 20,
+ 'Amount': 300,
+ 'Discount': 11,
+ 'Profit': 67,
+ },
+ {
+ 'Item Name': 'Flip- Flops & Slippers',
+ 'Date': '06/23/2014',
+ 'Time': '12:43:59 AM',
+ 'Quantity': 30,
+ 'Price': 10,
+ 'Amount': 300,
+ 'Discount': 10,
+ 'Profit': 70,
+ },
+ {
+ 'Item Name': 'Sneakers',
+ 'Date': '07/22/2014',
+ 'Time': '10:55:53 AM',
+ 'Quantity': 40,
+ 'Price': 20,
+ 'Amount': 800,
+ 'Discount': 13,
+ 'Profit': 66,
+ },
+ {
+ 'Item Name': 'Running Shoes',
+ 'Date': '02/04/2014',
+ 'Time': '03:44:34 AM',
+ 'Quantity': 20,
+ 'Price': 10,
+ 'Amount': 200,
+ 'Discount': 3,
+ 'Profit': 14,
+ },
+ {
+ 'Item Name': 'Loafers',
+ 'Date': '11/30/2014',
+ 'Time': '03:12:52 AM',
+ 'Quantity': 31,
+ 'Price': 10,
+ 'Amount': 310,
+ 'Discount': 6,
+ 'Profit': 29,
+ },
+ {
+ 'Item Name': 'Cricket Shoes',
+ 'Date': '07/09/2014',
+ 'Time': '11:32:14 AM',
+ 'Quantity': 41,
+ 'Price': 30,
+ 'Amount': 1210,
+ 'Discount': 12,
+ 'Profit': 166,
+ },
+ {
+ 'Item Name': 'T-Shirts',
+ 'Date': '10/31/2014',
+ 'Time': '12:01:44 AM',
+ 'Quantity': 50,
+ 'Price': 10,
+ 'Amount': 500,
+ 'Discount': 9,
+ 'Profit': 55,
+ }
+];
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs2/index.html b/ej2-react/code-snippet/spreadsheet/note-cs2/index.html
new file mode 100644
index 000000000..b278908a1
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs2/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs2/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/note-cs2/systemjs.config.js
new file mode 100644
index 000000000..503d4886b
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs2/systemjs.config.js
@@ -0,0 +1,55 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs3/app/app.jsx b/ej2-react/code-snippet/spreadsheet/note-cs3/app/app.jsx
new file mode 100644
index 000000000..a28541a19
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs3/app/app.jsx
@@ -0,0 +1,52 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs3/app/app.tsx b/ej2-react/code-snippet/spreadsheet/note-cs3/app/app.tsx
new file mode 100644
index 000000000..3bac0e720
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs3/app/app.tsx
@@ -0,0 +1,52 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective, RowsDirective, RowDirective, CellsDirective, CellDirective, } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs3/app/datasource.jsx b/ej2-react/code-snippet/spreadsheet/note-cs3/app/datasource.jsx
new file mode 100644
index 000000000..4f71f20f3
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs3/app/datasource.jsx
@@ -0,0 +1,105 @@
+/**
+ * Merge cells data source
+ */
+export let data = [
+ {
+ 'Item Name': 'Casual Shoes',
+ 'Date': '02/14/2014',
+ 'Time': '11:34:32 AM',
+ 'Quantity': 10,
+ 'Price': 20,
+ 'Amount': 200,
+ 'Discount': 1,
+ 'Profit': 10,
+ },
+ {
+ 'Item Name': 'Sports Shoes',
+ 'Date': '06/11/2014',
+ 'Time': '05:56:32 AM',
+ 'Quantity': 20,
+ 'Price': 30,
+ 'Amount': 600,
+ 'Discount': 5,
+ 'Profit': 50,
+ },
+ {
+ 'Item Name': 'Formal Shoes',
+ 'Date': '07/27/2014',
+ 'Time': '03:32:44 AM',
+ 'Quantity': 20,
+ 'Price': 15,
+ 'Amount': 300,
+ 'Discount': 7,
+ 'Profit': 27,
+ },
+ {
+ 'Item Name': 'Sandals & Floaters',
+ 'Date': '11/21/2014',
+ 'Time': '06:23:54 AM',
+ 'Quantity': 15,
+ 'Price': 20,
+ 'Amount': 300,
+ 'Discount': 11,
+ 'Profit': 67,
+ },
+ {
+ 'Item Name': 'Flip- Flops & Slippers',
+ 'Date': '06/23/2014',
+ 'Time': '12:43:59 AM',
+ 'Quantity': 30,
+ 'Price': 10,
+ 'Amount': 300,
+ 'Discount': 10,
+ 'Profit': 70,
+ },
+ {
+ 'Item Name': 'Sneakers',
+ 'Date': '07/22/2014',
+ 'Time': '10:55:53 AM',
+ 'Quantity': 40,
+ 'Price': 20,
+ 'Amount': 800,
+ 'Discount': 13,
+ 'Profit': 66,
+ },
+ {
+ 'Item Name': 'Running Shoes',
+ 'Date': '02/04/2014',
+ 'Time': '03:44:34 AM',
+ 'Quantity': 20,
+ 'Price': 10,
+ 'Amount': 200,
+ 'Discount': 3,
+ 'Profit': 14,
+ },
+ {
+ 'Item Name': 'Loafers',
+ 'Date': '11/30/2014',
+ 'Time': '03:12:52 AM',
+ 'Quantity': 31,
+ 'Price': 10,
+ 'Amount': 310,
+ 'Discount': 6,
+ 'Profit': 29,
+ },
+ {
+ 'Item Name': 'Cricket Shoes',
+ 'Date': '07/09/2014',
+ 'Time': '11:32:14 AM',
+ 'Quantity': 41,
+ 'Price': 30,
+ 'Amount': 1210,
+ 'Discount': 12,
+ 'Profit': 166,
+ },
+ {
+ 'Item Name': 'T-Shirts',
+ 'Date': '10/31/2014',
+ 'Time': '12:01:44 AM',
+ 'Quantity': 50,
+ 'Price': 10,
+ 'Amount': 500,
+ 'Discount': 9,
+ 'Profit': 55,
+ }
+];
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs3/app/datasource.tsx b/ej2-react/code-snippet/spreadsheet/note-cs3/app/datasource.tsx
new file mode 100644
index 000000000..884b4cb55
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs3/app/datasource.tsx
@@ -0,0 +1,105 @@
+/**
+ * Note data source
+ */
+export let data: Object[] = [
+ {
+ 'Item Name': 'Casual Shoes',
+ 'Date': '02/14/2014',
+ 'Time': '11:34:32 AM',
+ 'Quantity': 10,
+ 'Price': 20,
+ 'Amount': 200,
+ 'Discount': 1,
+ 'Profit': 10,
+ },
+ {
+ 'Item Name': 'Sports Shoes',
+ 'Date': '06/11/2014',
+ 'Time': '05:56:32 AM',
+ 'Quantity': 20,
+ 'Price': 30,
+ 'Amount': 600,
+ 'Discount': 5,
+ 'Profit': 50,
+ },
+ {
+ 'Item Name': 'Formal Shoes',
+ 'Date': '07/27/2014',
+ 'Time': '03:32:44 AM',
+ 'Quantity': 20,
+ 'Price': 15,
+ 'Amount': 300,
+ 'Discount': 7,
+ 'Profit': 27,
+ },
+ {
+ 'Item Name': 'Sandals & Floaters',
+ 'Date': '11/21/2014',
+ 'Time': '06:23:54 AM',
+ 'Quantity': 15,
+ 'Price': 20,
+ 'Amount': 300,
+ 'Discount': 11,
+ 'Profit': 67,
+ },
+ {
+ 'Item Name': 'Flip- Flops & Slippers',
+ 'Date': '06/23/2014',
+ 'Time': '12:43:59 AM',
+ 'Quantity': 30,
+ 'Price': 10,
+ 'Amount': 300,
+ 'Discount': 10,
+ 'Profit': 70,
+ },
+ {
+ 'Item Name': 'Sneakers',
+ 'Date': '07/22/2014',
+ 'Time': '10:55:53 AM',
+ 'Quantity': 40,
+ 'Price': 20,
+ 'Amount': 800,
+ 'Discount': 13,
+ 'Profit': 66,
+ },
+ {
+ 'Item Name': 'Running Shoes',
+ 'Date': '02/04/2014',
+ 'Time': '03:44:34 AM',
+ 'Quantity': 20,
+ 'Price': 10,
+ 'Amount': 200,
+ 'Discount': 3,
+ 'Profit': 14,
+ },
+ {
+ 'Item Name': 'Loafers',
+ 'Date': '11/30/2014',
+ 'Time': '03:12:52 AM',
+ 'Quantity': 31,
+ 'Price': 10,
+ 'Amount': 310,
+ 'Discount': 6,
+ 'Profit': 29,
+ },
+ {
+ 'Item Name': 'Cricket Shoes',
+ 'Date': '07/09/2014',
+ 'Time': '11:32:14 AM',
+ 'Quantity': 41,
+ 'Price': 30,
+ 'Amount': 1210,
+ 'Discount': 12,
+ 'Profit': 166,
+ },
+ {
+ 'Item Name': 'T-Shirts',
+ 'Date': '10/31/2014',
+ 'Time': '12:01:44 AM',
+ 'Quantity': 50,
+ 'Price': 10,
+ 'Amount': 500,
+ 'Discount': 9,
+ 'Profit': 55,
+ }
+];
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs3/index.html b/ej2-react/code-snippet/spreadsheet/note-cs3/index.html
new file mode 100644
index 000000000..b278908a1
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs3/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/note-cs3/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/note-cs3/systemjs.config.js
new file mode 100644
index 000000000..503d4886b
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/note-cs3/systemjs.config.js
@@ -0,0 +1,55 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/open-from-json/app/app.jsx b/ej2-react/code-snippet/spreadsheet/open-from-json/app/app.jsx
new file mode 100644
index 000000000..137194dcf
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/open-from-json/app/app.jsx
@@ -0,0 +1,96 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet';
+import { UploaderComponent } from '@syncfusion/ej2-react-inputs';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ const uploaderRef = React.useRef(null);
+ const asyncSettings = {
+ saveUrl:
+ 'https://services.syncfusion.com/react/production/api/FileUploader/Save',
+ removeUrl:
+ 'https://services.syncfusion.com/react/production/api/FileUploader/Remove',
+ };
+ const allowedExtensions = '.xlsx, .xls, .csv';
+ const buttons = { browse: 'Choose file' },
+ const onSuccess = (args) => {
+ if (args.operation == 'upload')
+ spreadsheetRef.current.open({ file: args.file.rawFile });
+ };
+ const createOptions = () => {
+ let options = {};
+ options.ignoreStyle = document.getElementById('style').checked;
+ options.ignoreFormula = document.getElementById('formula').checked;
+ options.ignoreFormat = document.getElementById('format').checked;
+ options.ignoreConditionalFormat = document.getElementById('cf').checked;
+ options.ignoreValidation = document.getElementById('dv').checked;
+ options.ignoreFreezePane = document.getElementById('freeze').checked;
+ options.ignoreWrap = document.getElementById('wrap').checked;
+ options.ignoreChart = document.getElementById('chart').checked;
+ options.ignoreImage = document.getElementById('image').checked;
+ options.ignoreNote = document.getElementById('note').checked;
+ return options;
+ }
+
+ const toggleCheckboxes = () => {
+ let valueOnlyCheckbox = document.getElementById('valueOnly');
+ let checkboxes = document.querySelectorAll('#Openfromjson input[type="checkbox"]:not(#valueOnly)');
+ checkboxes.forEach(checkbox => {
+ (checkbox).disabled = valueOnlyCheckbox.checked;
+ if (valueOnlyCheckbox.checked) {
+ (checkbox).checked = false;
+ }
+ });
+ }
+
+ const beforeOpen = (args) => {
+ args.cancel = true;
+ let valueOnlyCheckbox = document.getElementById("valueOnly").checked;
+ let options = valueOnlyCheckbox ? { onlyValues: true } : createOptions;
+ fetch(
+ 'https://services.syncfusion.com/react/production/api/spreadsheet/open',
+ args.requestData
+ ).then((response) => {
+ response.json().then((data) => {
+ spreadsheetRef.current.openFromJson({ file: data }, options)
+ });
+ });
+ }
+
+ return ();
+}
+
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
diff --git a/ej2-react/code-snippet/spreadsheet/open-from-json/app/app.tsx b/ej2-react/code-snippet/spreadsheet/open-from-json/app/app.tsx
new file mode 100644
index 000000000..bc2e98d9f
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/open-from-json/app/app.tsx
@@ -0,0 +1,95 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, BeforeOpenEventArgs, SerializationOptions } from '@syncfusion/ej2-react-spreadsheet';
+import { UploaderComponent } from '@syncfusion/ej2-react-inputs';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ const uploaderRef = React.useRef(null);
+ const asyncSettings = {
+ saveUrl:
+ 'https://services.syncfusion.com/react/production/api/FileUploader/Save',
+ removeUrl:
+ 'https://services.syncfusion.com/react/production/api/FileUploader/Remove',
+ };
+ const allowedExtensions: string = '.xlsx, .xls, .csv';
+ const buttons = { browse: 'Choose file' },
+ const onSuccess = (args) => {
+ if (args.operation == 'upload')
+ spreadsheetRef.current.open({ file: args.file.rawFile });
+ };
+ const createOptions = () => {
+ const options: SerializationOptions = {};
+ options.ignoreStyle = (document.getElementById('style') as HTMLInputElement).checked;
+ options.ignoreFormula = (document.getElementById('formula') as HTMLInputElement).checked;
+ options.ignoreFormat = (document.getElementById('format') as HTMLInputElement).checked;
+ options.ignoreConditionalFormat = (document.getElementById('cf') as HTMLInputElement).checked;
+ options.ignoreValidation = (document.getElementById('dv') as HTMLInputElement).checked;
+ options.ignoreFreezePane = (document.getElementById('freeze') as HTMLInputElement).checked;
+ options.ignoreWrap = (document.getElementById('wrap') as HTMLInputElement).checked;
+ options.ignoreChart = (document.getElementById('chart') as HTMLInputElement).checked;
+ options.ignoreImage = (document.getElementById('image') as HTMLInputElement).checked;
+ options.ignoreNote = (document.getElementById('note') as HTMLInputElement).checked;
+ }
+
+ const toggleCheckboxes = () => {
+ let valueOnlyCheckbox: HTMLInputElement = document.getElementById('valueOnly') as HTMLInputElement;
+ let checkboxes: NodeListOf = document.querySelectorAll('#Openfromjson input[type="checkbox"]:not(#valueOnly)');
+ checkboxes.forEach(checkbox => {
+ (checkbox as HTMLInputElement).disabled = valueOnlyCheckbox.checked;
+ if (valueOnlyCheckbox.checked) {
+ (checkbox as HTMLInputElement).checked = false;
+ }
+ });
+ }
+
+ const beforeOpen = (args: BeforeOpenEventArgs) => {
+ args.cancel = true;
+ let valueOnlyCheckbox: boolean = (document.getElementById("valueOnly") as HTMLInputElement).checked;
+ let options: SerializationOptions = valueOnlyCheckbox ? { onlyValues: true } : createOptions;
+ fetch(
+ 'https://services.syncfusion.com/react/production/api/spreadsheet/open',
+ args.requestData
+ ).then((response) => {
+ response.json().then((data) => {
+ spreadsheetRef.current.openFromJson({ file: data }, options)
+ });
+ });
+ }
+
+ return ();
+}
+
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
diff --git a/ej2-react/code-snippet/spreadsheet/open-from-json/index.html b/ej2-react/code-snippet/spreadsheet/open-from-json/index.html
new file mode 100644
index 000000000..5968aa335
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/open-from-json/index.html
@@ -0,0 +1,54 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/open-from-json/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/open-from-json/systemjs.config.js
new file mode 100644
index 000000000..bf9a4c63a
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/open-from-json/systemjs.config.js
@@ -0,0 +1,59 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-inputs": "syncfusion:ej2-react-inputs/dist/ej2-react-inputs.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
+
+
+
diff --git a/ej2-react/code-snippet/spreadsheet/print-cs3/app/app.jsx b/ej2-react/code-snippet/spreadsheet/print-cs3/app/app.jsx
new file mode 100644
index 000000000..237ba2141
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/print-cs3/app/app.jsx
@@ -0,0 +1,52 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { budgetData, salaryData } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:F1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/print-cs3/app/app.tsx b/ej2-react/code-snippet/spreadsheet/print-cs3/app/app.tsx
new file mode 100644
index 000000000..709acbf7b
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/print-cs3/app/app.tsx
@@ -0,0 +1,52 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { budgetData, salaryData } from './datasource';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ function onCreated() {
+ let spreadsheet = spreadsheetRef.current;
+ if (spreadsheet) {
+ spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'A1:D1');
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/print-cs3/app/datasource.jsx b/ej2-react/code-snippet/spreadsheet/print-cs3/app/datasource.jsx
new file mode 100644
index 000000000..068c8f397
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/print-cs3/app/datasource.jsx
@@ -0,0 +1,97 @@
+export let budgetData = [
+ {
+ "Expense Type": "Housing",
+ "Projected Cost": 7000,
+ "Actual Cost": 7500,
+ "Difference": -500,
+ },
+ {
+ "Expense Type": "Transportation",
+ "Projected Cost": 500,
+ "Actual Cost": 500,
+ "Difference": 0,
+ },
+ {
+ "Expense Type": "Insurance",
+ "Projected Cost": 1000,
+ "Actual Cost": 1000,
+ "Difference": 0,
+ },
+ {
+ "Expense Type": "Food",
+ "Projected Cost": 2000,
+ "Actual Cost": 1800,
+ "Difference": 200,
+ },
+ {
+ "Expense Type": "Pets",
+ "Projected Cost": 300,
+ "Actual Cost": 200,
+ "Difference": 100,
+ },
+ {
+ "Expense Type": "Personel Care",
+ "Projected Cost": 500,
+ "Actual Cost": 500,
+ "Difference": 0,
+ }, {
+ "Expense Type": "Loan",
+ "Projected Cost": 1000,
+ "Actual Cost": 1000,
+ "Difference": 0,
+ }, {
+ "Expense Type": "Tax",
+ "Projected Cost": 200,
+ "Actual Cost": 200,
+ "Difference": 0,
+ }, {
+ "Expense Type": "Savings",
+ "Projected Cost": 1000,
+ "Actual Cost": 900,
+ "Difference": 100,
+ },
+ {
+ "Expense Type": "Total",
+ "Projected Cost": 13500,
+ "Actual Cost": 13600,
+ "Difference": -100,
+ }
+];
+export let salaryData = [
+ {
+ "Earnings": "Basic",
+ "Credit Amount": 20000,
+ "Deductions": "Provident Fund",
+ "Debit Amount": 2400,
+ },
+ {
+ "Earnings": "HRA",
+ "Credit Amount": 8000,
+ "Deductions": "ESI",
+ "Debit Amount": 0,
+ },
+ {
+ "Earnings": "Special Allowance",
+ "Credit Amount": 25000,
+ "Deductions": "Professional Tax",
+ "Debit Amount": 200,
+ },
+ {
+ "Earnings": "Incentives",
+ "Credit Amount": 2000,
+ "Deductions": "TDS",
+ "Debit Amount": 2750,
+ },
+ {
+ "Earnings": "Bonus",
+ "Credit Amount": 1500,
+ "Deductions": "Other Deduction",
+ "Debit Amount": 0,
+ },
+ {
+ "Earnings": "Total Earnings",
+ "Credit Amount": 56500,
+ "Deductions": "Total Deductions",
+ "Debit Amount": 5350,
+ }
+];
diff --git a/ej2-react/code-snippet/spreadsheet/print-cs3/app/datasource.tsx b/ej2-react/code-snippet/spreadsheet/print-cs3/app/datasource.tsx
new file mode 100644
index 000000000..68a1590de
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/print-cs3/app/datasource.tsx
@@ -0,0 +1,98 @@
+export let budgetData: Object[] = [
+ {
+ "Expense Type": "Housing",
+ "Projected Cost": 7000,
+ "Actual Cost": 7500,
+ "Difference": -500,
+ },
+ {
+ "Expense Type": "Transportation",
+ "Projected Cost": 500,
+ "Actual Cost": 500,
+ "Difference": 0,
+ },
+ {
+ "Expense Type": "Insurance",
+ "Projected Cost": 1000,
+ "Actual Cost": 1000,
+ "Difference": 0,
+ },
+ {
+ "Expense Type": "Food",
+ "Projected Cost": 2000,
+ "Actual Cost": 1800,
+ "Difference": 200,
+ },
+ {
+ "Expense Type": "Pets",
+ "Projected Cost": 300,
+ "Actual Cost": 200,
+ "Difference": 100,
+ },
+ {
+ "Expense Type": "Personel Care",
+ "Projected Cost": 500,
+ "Actual Cost": 500,
+ "Difference": 0,
+ },{
+ "Expense Type": "Loan",
+ "Projected Cost": 1000,
+ "Actual Cost": 1000,
+ "Difference": 0,
+ },{
+ "Expense Type": "Tax",
+ "Projected Cost": 200,
+ "Actual Cost": 200,
+ "Difference": 0,
+ },{
+ "Expense Type": "Savings",
+ "Projected Cost": 1000,
+ "Actual Cost": 900,
+ "Difference": 100,
+ },
+ {
+ "Expense Type": "Total",
+ "Projected Cost": 13500,
+ "Actual Cost": 13600,
+ "Difference": -100,
+ }
+ ]
+
+ export let salaryData: Object[] = [
+ {
+ "Earnings": "Basic",
+ "Credit Amount": 20000,
+ "Deductions": "Provident Fund",
+ "Debit Amount": 2400,
+ },
+ {
+ "Earnings": "HRA",
+ "Credit Amount": 8000,
+ "Deductions": "ESI",
+ "Debit Amount": 0,
+ },
+ {
+ "Earnings": "Special Allowance",
+ "Credit Amount": 25000,
+ "Deductions": "Professional Tax",
+ "Debit Amount": 200,
+ },
+ {
+ "Earnings": "Incentives",
+ "Credit Amount": 2000,
+ "Deductions": "TDS",
+ "Debit Amount": 2750,
+ },
+ {
+ "Earnings": "Bonus",
+ "Credit Amount": 1500,
+ "Deductions": "Other Deduction",
+ "Debit Amount": 0,
+ },
+ {
+ "Earnings": "Total Earnings",
+ "Credit Amount": 56500,
+ "Deductions": "Total Deductions",
+ "Debit Amount": 5350,
+ }
+ ]
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/print-cs3/index.html b/ej2-react/code-snippet/spreadsheet/print-cs3/index.html
new file mode 100644
index 000000000..b278908a1
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/print-cs3/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/print-cs3/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/print-cs3/systemjs.config.js
new file mode 100644
index 000000000..503d4886b
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/print-cs3/systemjs.config.js
@@ -0,0 +1,55 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/app.jsx b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/app.jsx
new file mode 100644
index 000000000..f8ed8a889
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/app.jsx
@@ -0,0 +1,65 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective, RangeDirective, ColumnsDirective, ColumnDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ const readOnlyRow = () => {
+ let spreadsheet = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(true, '2:2', spreadsheet.activeSheetIndex);
+ }
+ const readOnlyCol = () => {
+ let spreadsheet = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(true, 'A:A', spreadsheet.activeSheetIndex);
+ }
+ const readOnlyCell = () => {
+ let spreadsheet = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(true, 'E5:E5', spreadsheet.activeSheetIndex);
+ }
+ const removeReadOnly = () => {
+ let spreadsheet = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(false, '2:2', spreadsheet.activeSheetIndex);
+ spreadsheet.setRangeReadOnly(false, 'A:A', spreadsheet.activeSheetIndex);
+ spreadsheet.setRangeReadOnly(false, 'E5:E5', spreadsheet.activeSheetIndex);
+ }
+ return (
+
+ Make Row 2 readOnly
+ Make Column A readOnly
+ Make E5 cell readOnly
+ Remove readOnly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
diff --git a/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/app.tsx b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/app.tsx
new file mode 100644
index 000000000..bcdcbe362
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/app.tsx
@@ -0,0 +1,66 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SheetsDirective, SheetDirective, RangesDirective, RangeDirective, ColumnsDirective, ColumnDirective, RowsDirective, RowDirective, CellsDirective, CellDirective } from '@syncfusion/ej2-react-spreadsheet';
+import { data } from './datasource';
+function App() {
+ const spreadsheetRef = React.useRef(null);
+ const readOnlyRow = (): void => {
+ let spreadsheet: SpreadsheetComponent = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(true, '2:2', spreadsheet.activeSheetIndex);
+ }
+ const readOnlyCol = (): void => {
+ let spreadsheet: SpreadsheetComponent = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(true, 'A:A', spreadsheet.activeSheetIndex);
+ }
+ const readOnlyCell = (): void => {
+ let spreadsheet: SpreadsheetComponent = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(true, 'E5:E5', spreadsheet.activeSheetIndex);
+ }
+ const removeReadOnly = (): void => {
+ let spreadsheet: SpreadsheetComponent = spreadsheetRef.current;
+ spreadsheet.setRangeReadOnly(false, '2:2', spreadsheet.activeSheetIndex);
+ spreadsheet.setRangeReadOnly(false, 'A:A', spreadsheet.activeSheetIndex);
+ spreadsheet.setRangeReadOnly(false, 'E5:E5', spreadsheet.activeSheetIndex);
+
+ }
+ return (
+
+ Make Row 2 readOnly
+ Make Column A readOnly
+ Make E5 cell readOnly
+ Remove readOnly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
diff --git a/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/datasource.jsx b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/datasource.jsx
new file mode 100644
index 000000000..1e8591643
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/datasource.jsx
@@ -0,0 +1,235 @@
+
+export let data = [
+ {
+ "Customer Name": "Romona Heaslip",
+ "Model": "Taurus",
+ "Color": "Aquamarine",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "07/11/2015",
+ "Amount": "8529.22"
+ },
+ {
+ "Customer Name": "Clare Batterton",
+ "Model": "Sparrow",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/13/2016",
+ "Amount": "17866.19"
+ },
+ {
+ "Customer Name": "Eamon Traise",
+ "Model": "Grand Cherokee",
+ "Color": "Blue",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "09/04/2015",
+ "Amount": "13853.09"
+ },
+ {
+ "Customer Name": "Julius Gorner",
+ "Model": "GTO",
+ "Color": "Aquamarine",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/15/2017",
+ "Amount": "2338.74"
+ },
+ {
+ "Customer Name": "Jenna Schoolfield",
+ "Model": "LX",
+ "Color": "Yellow",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "10/08/2014",
+ "Amount": "9578.45"
+ },
+ {
+ "Customer Name": "Marylynne Harring",
+ "Model": "Catera",
+ "Color": "Green",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/01/2017",
+ "Amount": "19141.62"
+ },
+ {
+ "Customer Name": "Vilhelmina Leipelt",
+ "Model": "7 Series",
+ "Color": "Goldenrod",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/20/2015",
+ "Amount": "6543.30"
+ },
+ {
+ "Customer Name": "Barby Heisler",
+ "Model": "Corvette",
+ "Color": "Red",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "11/24/2014",
+ "Amount": "13035.06"
+ },
+ {
+ "Customer Name": "Karyn Boik",
+ "Model": "Regal",
+ "Color": "Indigo",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "05/12/2014",
+ "Amount": "18488.80"
+ },
+ {
+ "Customer Name": "Jeanette Pamplin",
+ "Model": "S4",
+ "Color": "Fuscia",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "12/30/2014",
+ "Amount": "12317.04"
+ },
+ {
+ "Customer Name": "Cristi Espinos",
+ "Model": "TL",
+ "Color": "Aquamarine",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/18/2013",
+ "Amount": "6230.13"
+ },
+ {
+ "Customer Name": "Issy Humm",
+ "Model": "Club Wagon",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "02/02/2015",
+ "Amount": "9709.49"
+ },
+ {
+ "Customer Name": "Tuesday Fautly",
+ "Model": "V8 Vantage",
+ "Color": "Crimson",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "11/19/2014",
+ "Amount": "9766.10"
+ },
+ {
+ "Customer Name": "Rosemaria Thomann",
+ "Model": "Caravan",
+ "Color": "Violet",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "02/08/2014",
+ "Amount": "7685.49"
+ },
+ {
+ "Customer Name": "Lyell Fuentez",
+ "Model": "Bravada",
+ "Color": "Violet",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "08/05/2016",
+ "Amount": "18012.45"
+ },
+ {
+ "Customer Name": "Raynell Layne",
+ "Model": "Colorado",
+ "Color": "Pink",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "05/30/2016",
+ "Amount": "2785.49"
+ },
+ {
+ "Customer Name": "Raye Whines",
+ "Model": "4Runner",
+ "Color": "Red",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "12/10/2016",
+ "Amount": "9967.74"
+ },
+ {
+ "Customer Name": "Virgina Aharoni",
+ "Model": "TSX",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "10/23/2014",
+ "Amount": "5584.33"
+ },
+ {
+ "Customer Name": "Peta Cheshir",
+ "Model": "Pathfinder",
+ "Color": "Red",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "12/24/2015",
+ "Amount": "5286.53"
+ },
+ {
+ "Customer Name": "Jule Urion",
+ "Model": "Charger",
+ "Color": "Violet",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "11/20/2013",
+ "Amount": "13511.91"
+ },
+ {
+ "Customer Name": "Lew Gilyatt",
+ "Model": "Bonneville",
+ "Color": "Crimson",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "11/19/2013",
+ "Amount": "6498.19"
+ },
+ {
+ "Customer Name": "Jobey Fortun",
+ "Model": "B-Series",
+ "Color": "Blue",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "10/30/2014",
+ "Amount": "10359.67"
+ },
+ {
+ "Customer Name": "Blondie Crump",
+ "Model": "Voyager",
+ "Color": "Turquoise",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "04/06/2018",
+ "Amount": "8118.39"
+ },
+ {
+ "Customer Name": "Florentia Binns",
+ "Model": "Grand Prix",
+ "Color": "Orange",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "10/13/2016",
+ "Amount": "10204.37"
+ },
+ {
+ "Customer Name": "Jaquelin Galtone",
+ "Model": "Sunbird",
+ "Color": "Red",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "10/22/2013",
+ "Amount": "6528.06"
+ },
+ {
+ "Customer Name": "Hakeem Easseby",
+ "Model": "Mirage",
+ "Color": "Crimson",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "9/12/2014",
+ "Amount": "5619.25"
+ },
+ {
+ "Customer Name": "Nickolaus Gidman",
+ "Model": "XK",
+ "Color": "Orange",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "05/12/2016",
+ "Amount": "5091.43"
+ },
+ {
+ "Customer Name": "Jenine Iglesia",
+ "Model": "Accord",
+ "Color": "Orange",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "09/03/2018",
+ "Amount": "14566.08"
+ },
+ {
+ "Customer Name": "Fax Witherspoon",
+ "Model": "Range Rover Sport",
+ "Color": "Orange",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "2/22/2018",
+ "Amount": "5284.87"
+ }
+];
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/datasource.tsx b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/datasource.tsx
new file mode 100644
index 000000000..a01e9e6f1
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/readonly-cs1/app/datasource.tsx
@@ -0,0 +1,235 @@
+
+export let data: Object[] = [
+ {
+ "Customer Name": "Romona Heaslip",
+ "Model": "Taurus",
+ "Color": "Aquamarine",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "07/11/2015",
+ "Amount": "8529.22"
+ },
+ {
+ "Customer Name": "Clare Batterton",
+ "Model": "Sparrow",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/13/2016",
+ "Amount": "17866.19"
+ },
+ {
+ "Customer Name": "Eamon Traise",
+ "Model": "Grand Cherokee",
+ "Color": "Blue",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "09/04/2015",
+ "Amount": "13853.09"
+ },
+ {
+ "Customer Name": "Julius Gorner",
+ "Model": "GTO",
+ "Color": "Aquamarine",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/15/2017",
+ "Amount": "2338.74"
+ },
+ {
+ "Customer Name": "Jenna Schoolfield",
+ "Model": "LX",
+ "Color": "Yellow",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "10/08/2014",
+ "Amount": "9578.45"
+ },
+ {
+ "Customer Name": "Marylynne Harring",
+ "Model": "Catera",
+ "Color": "Green",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "7/01/2017",
+ "Amount": "19141.62"
+ },
+ {
+ "Customer Name": "Vilhelmina Leipelt",
+ "Model": "7 Series",
+ "Color": "Goldenrod",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/20/2015",
+ "Amount": "6543.30"
+ },
+ {
+ "Customer Name": "Barby Heisler",
+ "Model": "Corvette",
+ "Color": "Red",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "11/24/2014",
+ "Amount": "13035.06"
+ },
+ {
+ "Customer Name": "Karyn Boik",
+ "Model": "Regal",
+ "Color": "Indigo",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "05/12/2014",
+ "Amount": "18488.80"
+ },
+ {
+ "Customer Name": "Jeanette Pamplin",
+ "Model": "S4",
+ "Color": "Fuscia",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "12/30/2014",
+ "Amount": "12317.04"
+ },
+ {
+ "Customer Name": "Cristi Espinos",
+ "Model": "TL",
+ "Color": "Aquamarine",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "12/18/2013",
+ "Amount": "6230.13"
+ },
+ {
+ "Customer Name": "Issy Humm",
+ "Model": "Club Wagon",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "02/02/2015",
+ "Amount": "9709.49"
+ },
+ {
+ "Customer Name": "Tuesday Fautly",
+ "Model": "V8 Vantage",
+ "Color": "Crimson",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "11/19/2014",
+ "Amount": "9766.10"
+ },
+ {
+ "Customer Name": "Rosemaria Thomann",
+ "Model": "Caravan",
+ "Color": "Violet",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "02/08/2014",
+ "Amount": "7685.49"
+ },
+ {
+ "Customer Name": "Lyell Fuentez",
+ "Model": "Bravada",
+ "Color": "Violet",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "08/05/2016",
+ "Amount": "18012.45"
+ },
+ {
+ "Customer Name": "Raynell Layne",
+ "Model": "Colorado",
+ "Color": "Pink",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "05/30/2016",
+ "Amount": "2785.49"
+ },
+ {
+ "Customer Name": "Raye Whines",
+ "Model": "4Runner",
+ "Color": "Red",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "12/10/2016",
+ "Amount": "9967.74"
+ },
+ {
+ "Customer Name": "Virgina Aharoni",
+ "Model": "TSX",
+ "Color": "Pink",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "10/23/2014",
+ "Amount": "5584.33"
+ },
+ {
+ "Customer Name": "Peta Cheshir",
+ "Model": "Pathfinder",
+ "Color": "Red",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "12/24/2015",
+ "Amount": "5286.53"
+ },
+ {
+ "Customer Name": "Jule Urion",
+ "Model": "Charger",
+ "Color": "Violet",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "11/20/2013",
+ "Amount": "13511.91"
+ },
+ {
+ "Customer Name": "Lew Gilyatt",
+ "Model": "Bonneville",
+ "Color": "Crimson",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "11/19/2013",
+ "Amount": "6498.19"
+ },
+ {
+ "Customer Name": "Jobey Fortun",
+ "Model": "B-Series",
+ "Color": "Blue",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "10/30/2014",
+ "Amount": "10359.67"
+ },
+ {
+ "Customer Name": "Blondie Crump",
+ "Model": "Voyager",
+ "Color": "Turquoise",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "04/06/2018",
+ "Amount": "8118.39"
+ },
+ {
+ "Customer Name": "Florentia Binns",
+ "Model": "Grand Prix",
+ "Color": "Orange",
+ "Payment Mode": "Cash On Delivery",
+ "Delivery Date": "10/13/2016",
+ "Amount": "10204.37"
+ },
+ {
+ "Customer Name": "Jaquelin Galtone",
+ "Model": "Sunbird",
+ "Color": "Red",
+ "Payment Mode": "Net Banking",
+ "Delivery Date": "10/22/2013",
+ "Amount": "6528.06"
+ },
+ {
+ "Customer Name": "Hakeem Easseby",
+ "Model": "Mirage",
+ "Color": "Crimson",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "9/12/2014",
+ "Amount": "5619.25"
+ },
+ {
+ "Customer Name": "Nickolaus Gidman",
+ "Model": "XK",
+ "Color": "Orange",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "05/12/2016",
+ "Amount": "5091.43"
+ },
+ {
+ "Customer Name": "Jenine Iglesia",
+ "Model": "Accord",
+ "Color": "Orange",
+ "Payment Mode": "Debit Card",
+ "Delivery Date": "09/03/2018",
+ "Amount": "14566.08"
+ },
+ {
+ "Customer Name": "Fax Witherspoon",
+ "Model": "Range Rover Sport",
+ "Color": "Orange",
+ "Payment Mode": "Credit Card",
+ "Delivery Date": "2/22/2018",
+ "Amount": "5284.87"
+ }
+];
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/readonly-cs1/index.html b/ej2-react/code-snippet/spreadsheet/readonly-cs1/index.html
new file mode 100644
index 000000000..b278908a1
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/readonly-cs1/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/readonly-cs1/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/readonly-cs1/systemjs.config.js
new file mode 100644
index 000000000..c9bd65c8d
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/readonly-cs1/systemjs.config.js
@@ -0,0 +1,58 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
+
+
+
diff --git a/ej2-react/code-snippet/spreadsheet/save-as-json/app/app.jsx b/ej2-react/code-snippet/spreadsheet/save-as-json/app/app.jsx
new file mode 100644
index 000000000..9d9c6c2f9
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/save-as-json/app/app.jsx
@@ -0,0 +1,97 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet';
+import { createElement } from '@syncfusion/ej2-base';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+
+ const createOptions = () => {
+ let options = {};
+ options.ignoreStyle = document.getElementById('style').checked;
+ options.ignoreFormula = document.getElementById('formula').checked;
+ options.ignoreFormat = document.getElementById('format').checked;
+ options.ignoreConditionalFormat = document.getElementById('cf').checked;
+ options.ignoreValidation = document.getElementById('dv').checked;
+ options.ignoreFreezePane = document.getElementById('freeze').checked;
+ options.ignoreWrap = document.getElementById('wrap').checked;
+ options.ignoreChart = document.getElementById('chart').checked;
+ options.ignoreImage = document.getElementById('image').checked;
+ options.ignoreNote = document.getElementById('note').checked;
+ return options;
+ }
+
+ const toggleCheckboxes = () => {
+ let valueOnlyCheckbox = document.getElementById('valueOnly');
+ let checkboxes = document.querySelectorAll('#Saveasjson input[type="checkbox"]:not(#valueOnly)');
+ checkboxes.forEach(checkbox => {
+ checkbox.disabled = valueOnlyCheckbox.checked;
+ if (valueOnlyCheckbox.checked) {
+ checkbox.checked = false;
+ }
+ });
+ }
+
+ const saveFile = () => {
+ let valueOnlyCheckbox = document.getElementById("valueOnly").checked;
+ let options = valueOnlyCheckbox ? { onlyValues: true } : createOptions;
+ spreadsheetRef.current.saveAsJson(options).then((response) => {
+ var formData = new FormData();
+ formData.append(
+ 'JSONData',
+ JSON.stringify(response.jsonObject.Workbook)
+ );
+ formData.append('fileName', 'Sample');
+ formData.append('saveType', 'Xlsx');
+ formData.append('pdfLayoutSettings', JSON.stringify({ fitSheetOnOnePage: false, orientation: 'Portrait' })),
+ fetch(
+ 'https://services.syncfusion.com/react/production/api/spreadsheet/save',
+ {
+ method: 'POST',
+ body: formData,
+ }
+ ).then((response) => {
+ response.blob().then((data) => {
+ let anchor = createElement('a', {
+ attrs: { download: 'Sample.xlsx' },
+ });
+ let url = URL.createObjectURL(data);
+ anchor.href = url;
+ document.body.appendChild(anchor);
+ anchor.click();
+ URL.revokeObjectURL(url);
+ document.body.removeChild(anchor);
+ });
+ });
+ });
+ }
+
+ return ();
+}
+
+export default App;
+
+const root = createRoot(document.getElementById('root'));
+root.render( );
+{% endraw %}
diff --git a/ej2-react/code-snippet/spreadsheet/save-as-json/app/app.tsx b/ej2-react/code-snippet/spreadsheet/save-as-json/app/app.tsx
new file mode 100644
index 000000000..4a5235c9d
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/save-as-json/app/app.tsx
@@ -0,0 +1,96 @@
+{% raw %}
+import * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { SpreadsheetComponent, SerializationOptions } from '@syncfusion/ej2-react-spreadsheet';
+import { createElement } from '@syncfusion/ej2-base';
+
+function App() {
+ const spreadsheetRef = React.useRef(null);
+
+ const createOptions = () => {
+ const options: SerializationOptions = {};
+ options.ignoreStyle = (document.getElementById('style') as HTMLInputElement).checked;
+ options.ignoreFormula = (document.getElementById('formula') as HTMLInputElement).checked;
+ options.ignoreFormat = (document.getElementById('format') as HTMLInputElement).checked;
+ options.ignoreConditionalFormat = (document.getElementById('cf') as HTMLInputElement).checked;
+ options.ignoreValidation = (document.getElementById('dv') as HTMLInputElement).checked;
+ options.ignoreFreezePane = (document.getElementById('freeze') as HTMLInputElement).checked;
+ options.ignoreWrap = (document.getElementById('wrap') as HTMLInputElement).checked;
+ options.ignoreChart = (document.getElementById('chart') as HTMLInputElement).checked;
+ options.ignoreImage = (document.getElementById('image') as HTMLInputElement).checked;
+ options.ignoreNote = (document.getElementById('note') as HTMLInputElement).checked;
+ }
+
+ const toggleCheckboxes = () => {
+ let valueOnlyCheckbox: HTMLInputElement = document.getElementById('valueOnly') as HTMLInputElement;
+ let checkboxes: NodeListOf = document.querySelectorAll('#Saveasjson input[type="checkbox"]:not(#valueOnly)');
+ checkboxes.forEach(checkbox => {
+ (checkbox as HTMLInputElement).disabled = valueOnlyCheckbox.checked;
+ if (valueOnlyCheckbox.checked) {
+ (checkbox as HTMLInputElement).checked = false;
+ }
+ });
+ }
+
+ const saveFile = () => {
+ let valueOnlyCheckbox: boolean = (document.getElementById("valueOnly") as HTMLInputElement).checked;
+ let options: SerializationOptions = valueOnlyCheckbox ? { onlyValues: true } : createOptions;
+ spreadsheetRef.current.saveAsJson(options).then((response) => {
+ var formData = new FormData();
+ formData.append(
+ 'JSONData',
+ JSON.stringify(response.jsonObject.Workbook)
+ );
+ formData.append('fileName', 'Sample');
+ formData.append('saveType', 'Xlsx');
+ formData.append('pdfLayoutSettings', JSON.stringify({ fitSheetOnOnePage: false, orientation: 'Portrait' })),
+ fetch(
+ 'https://services.syncfusion.com/react/production/api/spreadsheet/save',
+ {
+ method: 'POST',
+ body: formData,
+ }
+ ).then((response) => {
+ response.blob().then((data) => {
+ let anchor = createElement('a', {
+ attrs: { download: 'Sample.xlsx' },
+ });
+ let url = URL.createObjectURL(data);
+ anchor.href = url;
+ document.body.appendChild(anchor);
+ anchor.click();
+ URL.revokeObjectURL(url);
+ document.body.removeChild(anchor);
+ });
+ });
+ });
+ }
+
+ return ();
+}
+
+export default App;
+
+const root = createRoot(document.getElementById('root')!);
+root.render( );
+{% endraw %}
diff --git a/ej2-react/code-snippet/spreadsheet/save-as-json/index.html b/ej2-react/code-snippet/spreadsheet/save-as-json/index.html
new file mode 100644
index 000000000..6281d2832
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/save-as-json/index.html
@@ -0,0 +1,53 @@
+
+
+
+
+ Syncfusion React Spreadsheet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ej2-react/code-snippet/spreadsheet/save-as-json/systemjs.config.js b/ej2-react/code-snippet/spreadsheet/save-as-json/systemjs.config.js
new file mode 100644
index 000000000..c9bd65c8d
--- /dev/null
+++ b/ej2-react/code-snippet/spreadsheet/save-as-json/systemjs.config.js
@@ -0,0 +1,58 @@
+System.config({
+ transpiler: "ts",
+ typescriptOptions: {
+ target: "es5",
+ module: "commonjs",
+ moduleResolution: "node",
+ emitDecoratorMetadata: true,
+ experimentalDecorators: true,
+ "jsx": "react"
+ },
+ meta: {
+ 'typescript': {
+ "exports": "ts"
+ }
+ },
+ paths: {
+ "syncfusion:": "https://cdn.syncfusion.com/ej2/26.1.35/"
+ },
+ map: {
+ app: 'app',
+ ts: "https://unpkg.com/plugin-typescript@4.0.10/lib/plugin.js",
+ typescript: "https://unpkg.com/typescript@2.2.2/lib/typescript.js",
+ "@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
+ "@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
+ "@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
+ "@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
+ "@syncfusion/ej2-notifications": "syncfusion:ej2-notifications/dist/ej2-notifications.umd.min.js",
+ "@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
+ "@syncfusion/ej2-dropdowns": "syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js",
+ "@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
+ "@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
+ "@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
+ "@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
+ "@syncfusion/ej2-excel-export": "syncfusion:ej2-excel-export/dist/ej2-excel-export.umd.min.js",
+ "@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
+ "@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
+ "@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js",
+ "@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
+ "@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
+ "@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
+ "@syncfusion/ej2-spreadsheet": "syncfusion:ej2-spreadsheet/dist/ej2-spreadsheet.umd.min.js",
+ "@syncfusion/ej2-react-base": "syncfusion:ej2-react-base/dist/ej2-react-base.umd.min.js",
+ "@syncfusion/ej2-react-spreadsheet": "syncfusion:ej2-react-spreadsheet/dist/ej2-react-spreadsheet.umd.min.js",
+ "react-dom/client": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react-dom": "https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js",
+ "react": "https://unpkg.com/react@18.2.0/umd/react.production.min.js",
+
+ },
+ packages: {
+ 'app': { main: 'app', defaultExtension: 'tsx' },
+ }
+
+});
+
+System.import('app');
+
+
+
diff --git a/ej2-react/diagram/labels.md b/ej2-react/diagram/labels.md
index 9fa7b7250..b67ef417d 100644
--- a/ej2-react/diagram/labels.md
+++ b/ej2-react/diagram/labels.md
@@ -386,5 +386,5 @@ The [`rotationReference`](https://helpej2.syncfusion.com/react/documentation/api
| Value | Description | Image |
| -------- | -------- | -------- |
-| Page | When this option is set, the annotation remains fixed in its original orientation even if its parent node is rotated. |  |
-| Parent | In this case, the annotation rotates along with its parent node. | |
+| Page | When this option is set, the annotation remains fixed in its original orientation even if its parent node is rotated. |  |
+| Parent | In this case, the annotation rotates along with its parent node. | |
diff --git a/ej2-react/spreadsheet/data-binding.md b/ej2-react/spreadsheet/data-binding.md
index 1556331ae..8c0ffaa67 100644
--- a/ej2-react/spreadsheet/data-binding.md
+++ b/ej2-react/spreadsheet/data-binding.md
@@ -49,6 +49,19 @@ By default, when a data source is bound to a sheet, columns are auto-assigned fr
> You can customize the mapping of column data only in the local data binding support.
+The following code example demonstrates how to customize the mapping of column data:
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/field-mapping-cs1/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/field-mapping-cs1/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "page.domainurl/code-snippet/spreadsheet/field-mapping-cs1" %}
+
## Remote data
To bind remote data to the Spreadsheet control, assign service data as an instance of [`DataManager`](../data) to the `dataSource` property. To interact with remote data source, provide the service endpoint `url`.
diff --git a/ej2-react/spreadsheet/images/spreadsheet_add_note.gif b/ej2-react/spreadsheet/images/spreadsheet_add_note.gif
new file mode 100644
index 000000000..21c9d9a24
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_add_note.gif differ
diff --git a/ej2-react/spreadsheet/images/spreadsheet_delete_note.gif b/ej2-react/spreadsheet/images/spreadsheet_delete_note.gif
new file mode 100644
index 000000000..272acb620
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_delete_note.gif differ
diff --git a/ej2-react/spreadsheet/images/spreadsheet_edit_note.gif b/ej2-react/spreadsheet/images/spreadsheet_edit_note.gif
new file mode 100644
index 000000000..5e45f0aa4
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_edit_note.gif differ
diff --git a/ej2-react/spreadsheet/images/spreadsheet_notes_disable.png b/ej2-react/spreadsheet/images/spreadsheet_notes_disable.png
new file mode 100644
index 000000000..2a45f3170
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_notes_disable.png differ
diff --git a/ej2-react/spreadsheet/images/spreadsheet_print_disable.png b/ej2-react/spreadsheet/images/spreadsheet_print_disable.png
new file mode 100644
index 000000000..b978bec2b
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_print_disable.png differ
diff --git a/ej2-react/spreadsheet/images/spreadsheet_print_in_ribbon_menu.png b/ej2-react/spreadsheet/images/spreadsheet_print_in_ribbon_menu.png
new file mode 100644
index 000000000..29b14ddb2
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_print_in_ribbon_menu.png differ
diff --git a/ej2-react/spreadsheet/images/spreadsheet_show_note.png b/ej2-react/spreadsheet/images/spreadsheet_show_note.png
new file mode 100644
index 000000000..fd66e58df
Binary files /dev/null and b/ej2-react/spreadsheet/images/spreadsheet_show_note.png differ
diff --git a/ej2-react/spreadsheet/keyboard-shortcuts.md b/ej2-react/spreadsheet/keyboard-shortcuts.md
index dd0afb085..959887fcd 100644
--- a/ej2-react/spreadsheet/keyboard-shortcuts.md
+++ b/ej2-react/spreadsheet/keyboard-shortcuts.md
@@ -16,6 +16,7 @@ The keyboard shortcuts supported in the spreadsheet are,
|----------|-------------|
| Ctrl + O | Displays dialog to open a file. |
| Ctrl + S / Alt + F2 | Saves the workbook. |
+| Ctrl + P | Print the active worksheet when the spreadsheet is in focus. |
| F2 | Enables edit mode. |
| ESC | Cancel edit mode and discard the changes. |
| Backspace and SPACE | Clears content of the active cell and enables edit mode. |
@@ -63,6 +64,7 @@ The keyboard shortcuts supported in the spreadsheet are,
| Alt + Up | Close the list data validation menu and filter menu. |
| Delete | Remove the contents of the cell. |
| Shift + F11 | Add a new sheet. |
+| Shift + F2 | Open the dialog box to add or edit notes for the desired cells. Meanwhile, upon pressing the `Esc` key, the dialog box for notes, when in focus, will save and close. |
| Ctrl + Shift + 9 | Unhide the selected rows. |
| Ctrl + Shift + 0 | Unhide the selected columns. |
| Ctrl + D | Fill the cell down. |
diff --git a/ej2-react/spreadsheet/notes.md b/ej2-react/spreadsheet/notes.md
new file mode 100644
index 000000000..34c2b6f1f
--- /dev/null
+++ b/ej2-react/spreadsheet/notes.md
@@ -0,0 +1,102 @@
+---
+layout: post
+title: Notes in React Spreadsheet component | Syncfusion
+description: Learn here all about the notes feature in Syncfusion React Spreadsheet component of Syncfusion Essential JS 2 and more.
+control: Notes
+platform: ej2-react
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Notes in React Spreadsheet component
+
+The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [`enableNotes`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#enablenotes) property, which defaults to **true**.
+
+When opening the Excel document with notes in the Spreadsheet, they will be displayed in the control. The cells containing notes will be indicated with a red colored triangle at the top-right corner. Hovering the mouse over these cells will display the content of the notes.
+
+
+
+In the below example, you can add, edit, save, and delete notes.
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/note-cs1/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/note-cs1/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+ {% previewsample "page.domainurl/code-snippet/spreadsheet/note-cs1" %}
+
+## Adding a note
+
+In the active worksheet, you can add a note in the following ways:
+
+* To add a note, right-click the cell to open the context menu and choose the **"Add Note"** option from the context menu. This will open a dialog box to add the content as a note.
+* You can also use the `Shift` + `F2` keyboard shortcut to add a note to the desired cell. A dialog box will be opened to add the content as a note.
+* After entering the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+
+
+
+## Editing a note
+
+In the active worksheet, you can modify the content of existing notes in the document.
+
+* To edit a note, right-click on the desired cell containing the note, which will open the context menu.
+* Select the **"Edit Note"** option from the context menu.
+* You can also use the `Shift` + `F2` keyboard shortcut to edit the note of the desired cell. A dialog box will be opened to edit the note.
+* After editing the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+
+
+
+## Deleting a note
+
+In the active worksheet, right-click on the desired cell containing the note that you want to remove, which opens the context menu. In the context menu, select the **"Delete Note"** option to delete the note.
+
+
+
+## Saving the document with notes
+
+The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as MS Excel (.xlsx) and MS Excel 97-2003 (.xls).
+
+> When exporting the Spreadsheet to file formats such as Comma Separated Values (.csv), Excel Macro-Enabled Workbook (.xlsm), Excel Binary Workbook (.xlsb), and PDF Document (.pdf), the notes will not be available.
+## Disabling notes
+
+To disable the note functionality, you need to set the [`enableNotes`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.
+
+
+
+In the below example, the note functionality is disabled in the Spreadsheet.
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/note-cs2/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/note-cs2/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+ {% previewsample "page.domainurl/code-snippet/spreadsheet/note-cs2" %}
+
+## Integrating notes during initial loading and using cell data binding
+
+The notes can be added initially when the Spreadsheet loads using cell data binding. You need to use the `notes` property in the cell settings to add notes to the Spreadsheet.
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/note-cs3/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/note-cs3/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+ {% previewsample "page.domainurl/code-snippet/spreadsheet/note-cs3" %}
+
+## Limitations
+
+* When importing the document with notes, the formatting of the content in the notes will not be available. Similarly, while adding notes, we cannot apply formatting to them.
+* The style and appearance of the dialog box for the notes, including size, color, border, and other elements, cannot be directly changed.
+* Exporting the workbook along with notes is not supported in file formats such as Comma Separated Values (.csv), Excel Macro-Enabled Workbook (.xlsm), Excel Binary Workbook (.xlsb), and PDF Document (.pdf).
\ No newline at end of file
diff --git a/ej2-react/spreadsheet/open-save.md b/ej2-react/spreadsheet/open-save.md
index ddb7a33c0..78ebc3964 100644
--- a/ej2-react/spreadsheet/open-save.md
+++ b/ej2-react/spreadsheet/open-save.md
@@ -117,6 +117,19 @@ spreadsheet.openFromJson({ file: file }, { ignoreStyle: true });
| ignoreImage | If **true**, images will be excluded when loading the JSON data. |
| ignoreNote | If **true**, notes will be excluded when loading the JSON data. |
+The following code snippet demonstrates how to configure the deserialization options and pass them as arguments to the openFromJson method:
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/open-from-json/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/open-from-json/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "page.domainurl/code-snippet/spreadsheet/open-from-json" %}
+
### External workbook confirmation dialog
When you open an excel file that contains external workbook references, you will see a confirmation dialog. This dialog allows you to either continue with the file opening or cancel the operation. This confirmation dialog will appear only if you set the `AllowExternalWorkbook` property value to **false** during the open request, as shown below. This prevents the spreadsheet from displaying inconsistent data.
@@ -290,6 +303,19 @@ spreadsheet.saveAsJson({ onlyValues: true });
| ignoreImage | If **true**, excludes images from the JSON output. |
| ignoreNote | If **true**, excludes notes from the JSON output. |
+The following code snippet demonstrates how to configure the serialization options and pass them as arguments to the saveAsJson method:
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/save-as-json/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/save-as-json/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "page.domainurl/code-snippet/spreadsheet/save-as-json" %}
+
### Supported file formats
The following list of Excel file formats are supported in Spreadsheet:
diff --git a/ej2-react/spreadsheet/print.md b/ej2-react/spreadsheet/print.md
new file mode 100644
index 000000000..e66e3bd1b
--- /dev/null
+++ b/ej2-react/spreadsheet/print.md
@@ -0,0 +1,55 @@
+---
+layout: post
+title: Print in React Spreadsheet component | Syncfusion
+description: Learn here all about print feature in Syncfusion React Spreadsheet component of Syncfusion Essential JS 2 and more.
+control: Print
+platform: ej2-react
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print in React Spreadsheet component
+
+The printing functionality allows end-users to print all contents, such as tables, charts, images, and formatted contents, available in the active worksheet or entire workbook in the Spreadsheet. You can enable or disable print functionality by using the `allowPrint` property, which defaults to **true**.
+
+## Default printing
+
+The active worksheet in the Spreadsheet can be printed by selecting the **File > Print** option in the ribbon menu. You can also initiate the printing using the `Ctrl` + `P` keyboard shortcut when the Spreadsheet is in focus. These two options print only the data from the active sheet without including rows headers, column headers and grid lines.
+
+
+
+## Custom printing
+
+The active worksheet or entire workbook can be printed with customized options using the `print` method. The `print` method takes one parameter, that is, `printOptions`, which can be used for customization.
+
+The `printOptions` contain three properties, as described below.
+
+* `type` - It specifies whether to print the current sheet or the entire workbook. The value for this property is either **ActiveSheet** or **Workbook**.
+* `allowGridLines` - This property specifies whether grid lines should be included in the printing or not. The grid lines will be included in the printed copy when set to **true**. When set to **false**, it will not be available.
+* `allowRowColumnHeader` - This property specifies whether row and column headers should be included in the printing or not. The headers will be included in the printed copy when set to **true**. When set to **false**, it will not be available.
+
+> When the `print` method is called without any parameters, the default printing will be performed.
+
+
+## Disable printing
+
+The printing functionality in the Spreadsheet can be disabled by setting the [`allowPrint`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#allowprint) property to **false**. After disabling, the **"Print"** option will not be available in the **"File"** menu of the ribbon and as a keyboard shortcut.
+
+
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/print-cs3/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/print-cs3/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+ {% previewsample "page.domainurl/code-snippet/spreadsheet/print-cs3" %}
+
+## Limitations
+
+* When printing the document, changing the page orientation to landscape is not supported in both the `print` method and print preview dialog of the web browser.
+* The styles provided for the data validation functionality will not be available in the printed copy of the document.
+* The content added to the cell templates, such as HTML elements, Syncfusion controls, and others, will not be available in the printed copy of the document.
\ No newline at end of file
diff --git a/ej2-react/spreadsheet/protect-sheet.md b/ej2-react/spreadsheet/protect-sheet.md
index 3b2820627..cf4668f02 100644
--- a/ej2-react/spreadsheet/protect-sheet.md
+++ b/ej2-react/spreadsheet/protect-sheet.md
@@ -149,6 +149,25 @@ You can make the cells read-only in the cell data binding by setting the `isRead
```
+The following example demonstrates how to make rows, columns, and cells read-only without protecting the sheet:
+
+{% tabs %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/readonly-cs1/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/readonly-cs1/app/app.tsx %}
+{% endhighlight %}
+{% highlight js tabtitle="datasource.jsx" %}
+{% include code-snippet/spreadsheet/readonly-cs1/app/datasource.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="datasource.tsx" %}
+{% include code-snippet/spreadsheet/readonly-cs1/app/datasource.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "page.domainurl/code-snippet/spreadsheet/readonly-cs1" %}
+
## Protect Workbook
Protect workbook feature helps you to protect the workbook so that users cannot insert, delete, rename, hide the sheets in the spreadsheet. You can use the [`password`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#password) property to protect workbook with password. You can use the [`isProtected`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#isprotected) property to protect or unprotect the workbook without the password.