In SpreadJS, users can insert cut or copied cells in any spreadsheet of a workbook by using 'Insert Cut/Copied Cells' option from the context menu. While inserting cells, context menu provides 2 sub-options:

Shift cells right: When cut or copied cell(s) is inserted, any data item(s) on its right, shifts further towards right (the number of columns shifted is equal to the number of inserted cells).
The below screenshot depicts the behavior of existing data, span or table when they are shifted towards right.

The below screenshot displays that an exception is thrown if the existing span or table needs to be split while shifting towards right.

Shift cells down: When cut or copied cell(s) is inserted, any data item(s) at bottom, shifts downwards (the number of rows shiifted is equal to the number of inserted cells).
The below screenshot depicts the behavior of existing data, span or table when they are shifted downwards.

The below screenshot displays that an exception is thrown if the existing span or table needs to be split while shifting downwards.

You can also use 'Insert cut or copied cells' option to insert data in row or column headers. The number of cells to be inserted should be divisible by the total number of columns or rows in the spreadsheet. Otherwise, the 'Insert cut or copied cells' option won't be displayed in the context menu. The data of cut or copied cells is replicated throughout the row or column header.
The below screenshot depicts a spreadsheet which contains 210 rows and 20 columns. When data of 3 columns is copied and inserted in row header, ‘Insert copied cells’ option is not displayed as 3 is not divisible by 20. Whereas when data of 2 columns is copied and inserted in row header, it gets successfully inserted as 2 is divisible by 20.

When data of 4 rows is inserted in column header, ‘Insert copied cells’ option is not displayed as 4 is not divisible by 210. Whereas when data of 3 rows is inserted in column header, it gets successfully inserted as 3 is divisible by 210.

Note: Data is not inserted if the row area already contains any data, table or span.