[]
클립보드 이벤트는 ClipboardChanged, ClipboardChanging, ClipboardPasted, 그리고 ClipboardPasting 이벤트 등 네 가지 유형을 사용할 수 있습니다. ClipboardChanged와 ClipboardChanging 이벤트는 각각 클립보드 변경이 발생했을 때와 클립보드가 변경 중일 때 발생합니다. 마찬가지로 ClipboardPasted와 ClipboardPasting 이벤트는 사용자가 클립보드에서 붙여넣기를 완료했을 때와 붙여넣기 중일 때 발생합니다. 이러한 클립보드 이벤트를 통해 사용자는 텍스트, 셀 데이터, 그림, 차트, 도형, 슬라이서, 그리고 사용자 정의 부동 객체를 Excel에서 Spread 워크시트로, 그리고 워크시트 내 또는 워크시트 간에 복사-붙여넣기 작업을 수행할 수 있습니다.
클립보드 복사-붙여넣기 작업을 수행할 때 원본 시트 및 범위 정보, 그리고 잘라내기 작업이 수행 중인지 여부와 같은 값에도 접근할 수 있습니다.
현재 SpreadJS에서 Excel로의 잘라내기 또는 복사 작업은 지원하지 않습니다.
다음 코드 샘플은 다양한 클립보드 이벤트를 사용하는 방법을 보여줍니다.
$(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");
});
});
Excel에 이미지, 차트, 도형 등 여러 객체가 있고 이 중 이미지 제외한 모든 객체를 SpreadJS로 복사-붙여넣기 하고 싶다고 가정해 봅시다. 이를 위해 ClipboardPasting 이벤트의 cancel
매개변수를 true로 설정합니다.
Excel에서 Spread 워크시트로 이미지, 차트, 도형 등의 객체를 복사-붙여넣기 하려면 allowCopyPasteExcelStyle
속성을 true로 설정해야 합니다. Excel 객체를 Spread로 복사하는 방법에 대해 더 알고 싶으면 이 주제를 참조하세요.
다음 코드 샘플은 Excel에서 Spread로 이미지 복사를 막는 방법을 보여줍니다.
$(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;
}
});
});
SpreadJS에 이미지, 차트, 도형 등 여러 객체가 있고 특정 워크시트 내에서 이미지 제외한 모든 부동 객체를 복사-붙여넣기 하고 싶다고 가정해 봅시다. 클립보드 이벤트의 'objects' 매개변수를 사용하면 텍스트, 셀 데이터, 그림, 사용자 정의 부동 객체, 슬라이서, 차트, 도형 등을 복사-붙여넣기 할 수 있습니다.
다음 코드 샘플은 특정 워크시트(fromSheet
매개변수 사용)에서 이미지 복사를 막고, 현재 작업 유형을 나타내는 열거형 GC.Spread.Sheet.ClipboardActionType을 사용해 실수로 잘라내기 작업을 수행하는 경우 사용자에게 경고하며 cancel
매개변수를 true로 설정하는 방법을 보여줍니다.
// 워크북 및 워크시트 구성
var spread = new GC.Spread.Sheets.Workbook("ss", { sheetCount: 2 });
var activeSheet = spread.getActiveSheet();
// allowCopyPasteExcelStyle을 true로 설정
spread.options.allowCopyPasteExcelStyle = true;
// 그림 추가
// activeSheet.pictures.add("f2", "Capture.PNG", 100, 60, 200, 100);
ss.getSheet(0).pictures.add("f5", "https://cdn.pixabay.com/photo/2015/10/01/17/17/car-967387__480.png", 2, 2, 200, 200);
spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, (e, args) => {
// 이 코드는 내부 부동 요소 복사-붙여넣기를 방지합니다
if (args.objects && args.objects.length > 0 && args.fromSheet.name() == "Sheet1") {
args.cancel = true;
}
// 이 코드는 실수로 잘라내기 작업을 수행하는 것을 방지합니다
else if (args.action == GC.Spread.Sheets.ClipboardActionType.cut) {
if (confirm("잘라내기 작업을 수행 중입니다.\n계속하시겠습니까?") == true) {
text = "확인을 눌렀습니다!";
} else {
text = "작업을 취소했습니다!";
args.cancel = true;
}
}
});