Copy & Paste
Copy & Cut
Copy & Cut actions allows exporting data from Handsontable into the system clipboard. The CopyPaste plugin copies and cuts data as a text/plain
and a text/html
mime-type.
End-user usage
Available keyboard shortcuts:
- CTRL/CMD + C - copies the content of the last selected cells range
- CTRL/CMD + X - cuts the content of the last selected cells range
Available options in the browser's toolbar:
Edit > Copy
- copies the content of the last selected cells rangeEdit > Cut
- cuts the content of the last selected cells range
Context menu
When the context menu is enabled, it includes default items among which you will find copy and cut options.
- Copy - as a predefined key
copy
- Cut - as a predefined key
cut
You can use them in the same way as the rest of the predefined items. These operations are executed by document.execCommand()
.
var container2 = document.getElementById('example2'); var hot2 = new Handsontable(container2, { data: Handsontable.helper.createSpreadsheetData(5, 5), rowHeaders: true, colHeaders: true, contextMenu: ['copy', 'cut'], });
Trigger copy & cut programmatically
Firstly, you need to select a cell range to copy or cut.
hot.selectCell(1, 1);
Then you can use one of the following commands:
document.execCommand('copy')
document.execCommand('cut')
The CopyPaste plugin listens to the browser's cop
and cut
events, so if they are triggered, our implementation will copy or cut the selected data into the system clipboard.
var container = document.getElementById('example1'); var copyBtn = document.getElementById('copy'); var cutBtn = document.getElementById('cut'); var hot = new Handsontable(container, { rowHeaders: true, colHeaders: true, data: Handsontable.helper.createSpreadsheetData(5, 5), outsideClickDeselects: false, }); Handsontable.dom.addEvent(copyBtn, 'mousedown', function () { hot.selectCell(1, 1); }); Handsontable.dom.addEvent(copyBtn, 'click', function () { document.execCommand('copy'); }); Handsontable.dom.addEvent(cutBtn, 'mousedown', function () { hot.selectCell(1, 1); }); Handsontable.dom.addEvent(cutBtn, 'click', function () { document.execCommand('cut'); });
Hooks
The CopyPaste plugin exposes following hooks to manipulate data during copy or cut operations:
- beforeCopy
- afterCopy
- beforeCut
- afterCut
In their descriptions, you can find examples of how to use them.
Paste
Paste action allows importing data from external sources using the user's system clipboard. The CopyPaste firstly looks for text/html
in the system clipboard, otherwise it looks for text/plain
.
End-user usage
Available keyboard shortcuts:
- CTRL/CMD + V - paste the content into the last selected cell range
Available options in the browser's toolbar:
Edit > Paste
- paste the content into the last selected cell range
Context menu
Due to security reason, modern browsers disallow to read from the system clipboard.
Trigger paste programmatically
Due to security reason, modern browsers disallow to read from the system clipboard.
Hooks
The CopyPaste plugin exposes following hooks to manipulate data during the pasting operation:
- beforePaste
- afterPaste
In their descriptions, you can find examples of how to use them.
Limitations
- The CopyPaste plugin doesn't copy, cut or paste cells' appearance.
- The data copied from Handsontable will always be kept as plain text. For instance, if you copy a checked checkbox, the input will be kept as a value of
"true"
. document.execCommand
can be called only during an immediate-execute event, such as aMouseEvent
or aKeyboardEvent
.- Internet Explorer supports only
Text
mime-type - what is an equivalent oftext/plain
. - Internet Explorer prompts a confirm window to allow/disallow at the first time user tries to call
document.execCommand
. Unfortunately, if user disallows access to the system clipboard, no exceptions will be thrown andcopy
andcut
actions will be disabled for end-user. You can read more about this behavior of the browser here