[]
SpreadJS를 사용하면 워크시트를 보호하여 모든 셀을 잠그고 다른 사용자가 데이터를 변경, 이동 또는 삭제하지 못하도록 할 수 있습니다. 그러나 잠긴 셀의 데이터는 여전히 복사할 수 있습니다.
isProtected 옵션을 true로 설정하여 워크시트를 보호할 수 있으며, locked 메서드를 사용하여 셀을 잠그거나 잠금 해제할 수 있습니다.
locked 메서드를 False로 설정하면 보호된 워크시트에서 특정 셀을 사용자가 편집할 수 있도록 허용할 수 있습니다.
sheet.getCell(1,1, GC.Spread.Sheets.SheetArea.viewport).locked(false);
sheet.setValue(1,1,"unLocked");
sheet.getRange(-1,3, -1, 1).locked(false);
sheet.getRange(5, -1, 1, -1).locked(false);
sheet.options.isProtected = true;다음 단계에 따라 보호된 워크시트에서 특정 셀 범위만 잠글 수 있습니다:
사용자 지정 스타일을 생성하여 locked 메서드를 false로 설정하여 모든 셀의 잠금을 해제합니다.
읽기 전용으로 설정할 특정 셀 범위만 따로 잠금 처리합니다.
// 워크북 및 워크시트 구성
var spread = new GC.Spread.Sheets.Workbook("ss");
var sheet = spread.getActiveSheet();
// 스타일을 통해 워크시트의 모든 셀 잠금 해제
let style = new GC.Spread.Sheets.Style();
style.locked = false;
// 시트의 모든 셀에 대해 스타일을 기본 스타일로 설정
sheet.setDefaultStyle(style);
// 읽기 전용으로 설정할 셀 범위를 별도로 잠금
new GC.Spread.Sheets.CellRange(sheet, 0, 0, 13, 4).locked(true);
// 시트 보호 설정
sheet.options.isProtected = true;options.protectionOptions 속성은 변경 가능한 영역을 지정하는 데 사용할 수 있습니다. 이 영역에는 행이나 열의 크기 조정, 드래그, 삽입 또는 삭제 등이 포함될 수 있습니다.
isProtected 옵션이 true로 설정되면 다음 속성들이 적용됩니다:
속성 | 설명 |
|---|---|
| 행 삽입 시 드래그 작업을 허용합니다. |
| 열 삽입 시 드래그 작업을 허용합니다. |
| 행 삽입을 허용합니다. |
| 열 삽입을 허용합니다. |
| 행 삭제를 허용합니다. |
| 열 삭제를 허용합니다. |
| 잠긴 셀 선택을 허용합니다. |
| 잠금 해제된 셀 선택을 허용합니다. |
| 범위 정렬을 허용합니다. |
| 범위 필터링을 허용합니다. |
| 플로팅 오브젝트(도형 등)의 편집을 허용합니다. |
| 행 크기 조정을 허용합니다. |
| 열 크기 조정을 허용합니다. |
| 행 그룹 확장/축소를 허용합니다. |
| 열 그룹 확장/축소를 허용합니다. |
| 피벗테이블의 편집을 허용합니다. |
isProtected 옵션이 false로 설정되면 위의 보호 옵션들은 적용되지 않습니다.
워크시트를 보호하면서 SpreadJS에서 제공하는 다양한 보호 옵션들을 활성화할 수 있습니다.
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
sheet.options.isProtected = true;
sheet.options.protectionOptions.allowDeleteRows = true;
sheet.options.protectionOptions.allowDeleteColumns = true;
sheet.options.protectionOptions.allowInsertRows = true;
sheet.options.protectionOptions.allowInsertColumns = true;
sheet.options.protectionOptions.allowDragInsertRows = true;
sheet.options.protectionOptions.allowDragInsertColumns = true;
sheet.options.protectionOptions.allowOutlineColumns = true;참고: allowInsertRows, allowInsertColumns, allowDeleteRows, allowDeleteColumns 보호 옵션은 사용자 인터페이스에서 작업을 수행할 때만 적용됩니다. 다시 말해, 이 값들은 컨텍스트 메뉴에서의 행/열 삽입 및 삭제 명령을 제한하는 데만 영향을 미칩니다.
기본적으로 보호된 워크시트에서는 개요 행 또는 열 그룹을 확장하거나 축소할 수 없습니다. 이때 invalidOperation 이벤트가 발생하며, 다음과 같이 해당 이벤트에 바인딩하여 경고 메시지를 표시할 수 있습니다:
// 경고 메세지 설정
spread.bind(GC.Spread.Sheets.Events.InvalidOperation, (e, args) => {
if(args.invalidType === GC.Spread.Sheets.InvalidOperationType.groupProtected){
args.message="Expand or Collapse operation is not allowed for a protected worksheet.";
alert(args.message)
}
}); protect 메서드를 사용할 때 워크시트를 보호하면서 암호를 설정할 수 있습니다. 이 메서드를 호출하면 isProtected 옵션은 자동으로 true로 설정됩니다.
//워크시트 보호
var password = 'AddedPassword';
activeSheet.protect(password); 이후, unprotect 메서드에 암호를 인자로 전달하여 워크시트 보호를 해제할 수 있습니다.
// 암호를 사용하여 워크시트의 보호를 해제
if(activeSheet.hasPassword()) {
activeSheet.unprotect(password);
} else {
activeSheet.unprotect();
}보호된 시트에서 수식 셀의 표시 여부를 제어하려면 Style 클래스의 hidden 속성이나 CellRange클래스의 hidden 메서드를 사용할 수 있습니다.
기본적으로 hidden 속성은 false로 설정되어 있어 수식이 숨겨지지 않습니다. 또한 이 속성은 SSJSON, SJS, XLSX 형식의 내보내기 및 가져오기를 지원합니다.
hidden 속성은 예를 들어 KPI 데이터 생성, 연말 보너스 계산 등과 같이 직원의 자기 평가 및 상사 평가에 기반하여 계산이 이뤄지는 경우, 관련 수식을 숨기고 평가 시스템을 보호하고자 할 때 유용하게 사용됩니다.
다음은 GC.Spread.Sheets.Style 타입의 hidden 속성을 사용해 셀의 수식을 숨기는 코드 예시입니다:
// 시트가 보호될 때 셀의 수식이 표시되는지 여부를 설정
activeSheet.options.isProtected = true;
// hidden 속성이 true인 스타일 생성
var style = new GC.Spread.Sheets.Style();
style.hidden = true;
activeSheet.setStyle(1, 1, style, GC.Spread.Sheets.SheetArea.viewport);
// 수식이 포함된 셀에 스타일 적용
activeSheet.setFormula(1, 1, "=SUM(1,2)");또는, 아래의 코드 예시는 GC.Spread.Sheets.CellRange 타입의 hidden 메서드를 사용하는 방식입니다:
// 시트가 보호될 때 셀의 수식이 표시되는지 여부를 설정
activeSheet.options.isProtected = true;
activeSheet.setFormula(1, 3, "=SUM(10,20)");
activeSheet.getRange(1, 3, GC.Spread.Sheets.SheetArea.viewport).hidden(true);보호된 워크시트에서 숨겨진 속성에 의해 영향을 받는 SpreadJS 기능들:
셀에 hidden 속성이 설정되어 있을 경우, 수식 입력줄과 수식 편집기 패널은 어떤 수식도 표시하지 않습니다.
편집 모드에서 hidden 셀이 선택되면, 입력 에디터 기본 데이터는 비어 있습니다.
숨겨진 셀은 수식을 복사하지 않고 결과만 복사되지만, 잘라내기 작업은 항상 수식을 포함합니다.
그러나 locked 속성을 true로 설정하여 이를 방지할 수 있습니다.
showFormulas 속성은 숨겨진 셀의 수식을 표시하지 않습니다.
FORMULATEXT() 함수는 hidden 속성이 적용된 셀의 수식을 가져올 수 없습니다.
참고: hidden과 locked 속성은 아래 표와 같이 서로의 기능에 영향을 줍니다:
상황 | locked | hidden | 결과 |
|---|---|---|---|
시트가 보호되지 않음 | True/False | True/False | locked와 hidden 모두 적용되지 않음 |
시트가 보호됨 | False | False | 셀은 편집 가능하며 수식은 정상적으로 표시됨 |
True | False | 셀은 잠겨 있어 편집 불가, 수식은 정상적으로 표시됨 | |
False | True | 셀은 편집 가능, 수식은 숨겨짐 편집 모드에서 입력 박스는 기본값으로 null 표시 | |
True | True | 셀은 잠겨 있고 편집 불가, 수식은 숨겨짐 |
제한사항
테이블 시트, 간트 시트, 리포트 시트는 hidden 속성을 지원하지 않습니다.
API를 통해 접근한 수식에는 hidden 속성이 영향을 주지 않습니다.
알겠습니다. 요청하신 대로 MD 형식을 그대로 유지하면서 한국어로 번역해 드리겠습니다.
SpreadJS는 allowUsePivotTable 속성을 통해 보호된 워크시트에서도 제한된 피벗테이블 상호작용을 허용합니다.
true로 설정하면 사용자가 피벗테이블을 수정할 수 있습니다.
false로 설정하면 대부분의 편집 작업이 제한되지만 일부 기본 작업은 여전히 가능합니다.
참고:
피벗테이블 보호는 UI 수준 작업에만 적용됩니다. 코드로 수행되는 API 기반 수정은 제한되지 않습니다.
allowUsePivotTable옵션은 워크시트 보호가 활성화된 경우(isProtected = true)에만 적용됩니다.UI를 통해 보호된 피벗테이블을 수정해야 하는 경우, 일시적으로 보호를 해제한 후 업데이트를 수행하고 다시 보호를 적용하세요.
팁:
allowUsePivotTable속성은 런타임에서 변경할 수 있어, 시트를 완전히 다시 초기화하지 않고도 상호작용 수준을 조정할 수 있습니다.
다음 섹션에서는 코드 예제와 보호 상태에서 활성화되는 피벗테이블 기능을 자세히 나열한 표를 제공합니다.
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
sheet.options.isProtected = true;
sheet.options.protectionOptions.allowUsePivotTable = false;보호 모드에서 편집 가능한 기능
워크시트가 보호된 경우(isProtected = true 및 allowUsePivotTable = false)에도 다음 피벗테이블 작업은 여전히 가능합니다.
기능 | 설명 |
|---|---|
피벗테이블 이름 변경 | 피벗테이블 인스턴스 이름을 변경합니다. |
소계 유형 변경 | 소계 계산 방식을 수정합니다. |
데이터 없음 표시 | 빈 셀 표시 방식을 제어합니다. |
필드 소계 위치 | 개별 필드의 소계 위치를 조정합니다. |
필드 영역 및 인덱스 설정 | 피벗테이블 영역 내에서 필드 위치를 재배치합니다. |
확장 및 축소 | 그룹화된 항목을 확장하거나 축소합니다. |
필터 초기화 | 적용된 필터를 제거합니다. |
필터 | 값 또는 레이블 필터를 적용합니다. |
정렬 | 필드 정렬 옵션을 변경합니다. |
필드 끌어서 놓기 | 허용된 피벗테이블 영역 내에서 필드를 이동합니다. |
사용 불가 기능 (자동으로 비활성화됨)
다음 작업들은 피벗테이블 데이터 또는 구조를 수정하려면 보호 해제 모드가 필요합니다.
레이아웃 및 표시 구성
모든 피벗테이블 옵션
레이아웃 및 스타일 구성
반복 필드 레이블
필드 서식
데이터 표시 방식
피벗테이블 소계 위치
테마
총계
계산 및 필드 작업
필드 계산
항목 계산
조건부 서식
데이터 및 구조 작업
데이터 원본 업데이트 또는 변경
모두 지우기
그룹화
피벗테이블 삭제
슬라이서 및 타임라인(필터 컨트롤)
시트 보호(Protect Sheet) 대화상자에 접근하려면, 시트 이름이 표시된 탭 스트립에서 마우스 오른쪽 버튼을 클릭한 후, 시트 보호(Protect Sheet) 옵션을 선택합니다.
시트 보호(Protect Sheet) 대화상자를 사용하여 워크시트를 보호 및 보호 해제하는 단계
워크시트를 보호하려면 암호를 입력하고, 시트 보호(Protect Sheet) 대화상자에서 제공된 여러 옵션을 선택하거나 선택 해제합니다.

워크시트 보호를 위한 암호를 입력하면, 암호 확인을 위한 또 다른 대화상자가 표시됩니다.

암호 설정이 성공적으로 완료되면 보호된 워크시트에 접근할 수는 있지만, 시트에 대한 어떤 변경도 수행할 수 없습니다.
워크시트를 보호 해제하려면 시트 보호 해제(Unprotect Sheet) 대화상자를 통해 설정한 암호를 입력하면 됩니다.
