クリップボード変更に対して、ClipboardChanged、ClipboardChanging、ClipboardPasted、ClipboardPastingの4つのイベントを使用できます。ClipboardChangedイベントはクリップボードの変更が起こったとき、およびClipboardChangingイベントはクリップボードが変更されるときに発生します。また、ClipboardPastedイベントはユーザーがクリップボードから貼り付けたとき、およびClipboardPastingイベントはユーザーがクリップボードから貼り付けるときに発生します。これらのイベントを使用すると、ExcelからSpreadへ、ワークシート内およびワークシート間で、テキスト、セルのデータ、画像、チャート、図形、スライサー、カスタムフローティングオブジェクトをコピーおよび貼り付けることができます。
現在、SpreadJSからExcelへのテキスト以外のコピーと切り取りの操作はサポートされていません。
次のサンプルコードは、さまざまなクリップボードイベントを使用します。
Javascript |
コードのコピー
|
---|---|
<script> $(document).ready(function () { // Spreadを初期化します。 var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 }); // アクティブシートを取得します。 var activeSheet = spread.getActiveSheet(); // allowCopyPasteExcelStyleをtrueに設定します。 spread.options.allowCopyPasteExcelStyle = true; // クリップボードイベントをバインドします。 activeSheet.bind(GC.Spread.Sheets.Events.ClipboardChanged, function (sender, args) { console.log("ClipboardChanged."); }); activeSheet.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (sender, args) { console.log("ClipboardChanging"); }); activeSheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) { console.log("ClipboardPasted"); }); activeSheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (sender, args) { console.log("ClipboardPasting"); }); }); </script> |
次のケースではクリップボードイベントを使用できます。
ExcelからSpreadJSへのコピーと貼り付け
例えば、Excelに画像、チャート、図形などの複数のオブジェクトがあり、画像を除いてすべてのオブジェクトをコピーしてスプレッドシートに貼り付けたいとします。このため、ClipboardPastingイベントの「cancel」パラメータはtrueに設定されます。
また、画像、チャート、図形などのオブジェクトをExcelからスプレッドシートにコピーおよび貼り付けるには、「allowCopyPasteExcelStyle」プロパティをtrueに設定する必要があります。 ExcelオブジェクトをSpreadにコピーする方法については、このトピックを参照してください。
次のサンプルコードは、ExcelからSpreadに画像をコピーしないように設定します。
Javascript |
コードのコピー
|
---|---|
<script> $(document).ready(function () { // Spreadを初期化します。 var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 }); // アクティブシートを取得します。 var activeSheet = spread.getActiveSheet(); // allowCopyPasteExcelStyleをtrueに設定します。 spread.options.allowCopyPasteExcelStyle = true; // 画像を追加します。 activeSheet.pictures.add("f2", "Capture.PNG", 100, 60, 200, 100); // このコードは、ExcelからSpreadJSへの画像のコピーを防ぎます。 spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, (e, args) => { if ((args.pasteData && args.pasteData.image)) { args.cancel = true; } }); }); </script> |
ワークシート内のコピーと貼り付け
例えば、ワークシート内に画像、チャート、図形などの複数のオブジェクトがあり、画像を除いてすべてのフローティングオブジェクトをコピーして同じワークシート内に貼り付けたいとします。クリップボードイベントの「objects」パラメータを使用して、テキスト、セルのデータ、画像、カスタムフローティングオブジェクト、スライサー、チャート、および図形をコピーと貼り付けることができます。次のサンプルコードは、「cancel」パラメータをtrueに設定して、ワークシート内に画像をコピーしないように設定します。
Javascript |
コードのコピー
|
---|---|
<script> $(document).ready(function () { // Spreadを初期化します。 var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 }); // アクティブシートを取得します。 var activeSheet = spread.getActiveSheet(); // allowCopyPasteExcelStyleをtrueに設定します。 spread.options.allowCopyPasteExcelStyle = true; spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, (e, args) => { // このコードは、内部のフローティング要素のコピー/貼り付けを防止します。//このコードは、外部の画像の貼り付けを防止します。 if ((args.objects && args.objects.length > 0) || (args.pasteData && args.pasteData.image)) { // alert("テスト"); args.cancel = true; } }); }); </script> |