クリップボード変更に対して、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>
|
|