[]
문서 속성(Document Properties)은 워크북에 대한 제목, 작성자, 주제 등과 같은 정보를 포함합니다. SpreadJS는 이러한 속성을 워크북 내에서 관리할 수 있도록 지원합니다.
문서 속성을 관리하기 위해 SpreadJS는 docProps
속성을 제공합니다. 이 속성은 IDocProps 인터페이스 타입이며, coreDocProps
, appDocProps
, customDocProps
등의 속성을 통해 문서 정보를 사용자 정의할 수 있습니다.
기본 문서 속성(Core Document Properties): 제목, 작성자, 키워드 등 문서의 기본적인 정보를 나타냅니다.
앱 문서 속성(App Document Properties): 관리자, 회사 정보 등 문서 관리에 특화된 속성입니다.
사용자 정의 문서 속성(Custom Document Properties): 다양한 데이터 타입으로 저장할 수 있는 사용자 정의 속성입니다.
다음 코드는 문서 속성을 설정하는 방법을 보여줍니다.
// 기본 문서 속성 설정
spread.docProps.coreDocProps = {
title: 'Sample Document',
creator: 'Admin',
keywords: 'sample, document',
subject: 'Sample Subject',
description: 'This is a sample document',
category: 'Sample Category',
contentStatus: 'Draft',
created: '11/01/24',
lastPrinted: '20/01/24',
modified: '21/01/24',
lastModifiedBy: 'John'
};
// 앱 문서 속성 설정
spread.docProps.appDocProps = {
manager: 'John',
company: 'XYZCompany',
hyperlinkBase: 'https://example.com/documents/'
};
// 사용자 정의 문서 속성 설정
spread.docProps.customDocPropsManager.all([
{ name: 'Kim', value: '1' },
{ name: 'Smith', value: '2' }
]);
// 문서 속성 가져오기
console.log(spread.docProps.coreDocProps);
console.log(spread.docProps.appDocProps);
console.log(spread.docProps.customDocPropsManager.all());
문서의 사용자 정의 속성은 IDocProps
인터페이스의 customDocPropsManager
속성을 사용하여 변경할 수 있습니다.
아래의 코드 예제는 사용자 정의 속성 관리자를 통해 문서에 연결된 사용자 정의 속성을 추가, 삭제, 조회, 전체 목록 확인, 초기화하는 방법을 보여줍니다.
const customPropsManager = spread.docProps.customDocPropsManager;
customPropsManager.all([
{ name: 'name1', value: 'value1' },
{ name: 'name2', value: 'value2' },
]);
// 새로운 사용자 정의 문서 속성 설정
customPropsManager.add('name3', 'value3');
customPropsManager.add('name1', 'value1_modified');
// 'name2' 사용자 정의 문서 속성 삭제
customPropsManager.remove('name2');
// 'name3' 사용자 정의 문서 속성의 값 가져오기
customPropsManager.get('name3'); // Output: 'value3'
// 남아 있는 모든 사용자 정의 문서 속성 가져오기
customPropsManager.all(); // Output: [ { name: 'name1', value: 'value1_modified' }, { name: 'name3', value: 'value3' } ]
// 모든 사용자 정의 문서 속성 초기화
customPropsManager.clear();
워크북 내에서 문서 속성을 관리하기 위해 아래 단계를 따르기 바랍니다.
파일(File) 탭을 클릭한 후 **정보(Info)**를 선택합니다.
정보(Info) 탭의 오른쪽에 워크북의 속성이 표시됩니다.
필요한 정보를 추가하거나 수정합니다.
텍스트 입력란 바깥을 클릭하면 변경 사항이 저장됩니다.
Info. 파일(File) 탭을 클릭한 후 **정보(Info)**를 선택합니다.
속성(Properties) 드롭다운을 클릭하고 고급 속성(Advanced Properties)을 선택합니다.
속성(Properties) 대화 상자에는 요약(Summary), 통계(Statistics), 내용(Contents), 사용자 지정(Custom) 등의 다양한 탭이 있습니다.
각 탭은 문서와 관련된 다양한 정보를 설정하는 데 사용됩니다.
기본적으로 요약(Summary) 탭이 선택되어 있으며, 필요에 따라 문서 요약 정보를 추가하거나 변경할 수 있습니다.
통계(Statistics) 및 내용(Contents) 탭에서는 문서에 대한 일반 정보를 확인할 수 있습니다.
추가 사용자 정의 속성을 설정하려면 사용자 지정(Custom) 탭을 클릭합니다.
이름(Name) 필드에 사용자 정의 속성의 이름을 입력하거나 목록에서 선택합니다.
형식(Type) 드롭다운에서 데이터 유형을 선택합니다.
사용 가능한 데이터 유형은 다음과 같습니다:
텍스트(Text)
날짜(Date)
숫자(Number)
예/아니오(Yes 또는 No)
값(Value) 필드에 선택한 데이터 유형에 맞는 값을 입력합니다.
선택한 형식(Type)에 맞는 값을 입력해야 합니다. 예를 들어 형식(Type)을 ‘숫자(Number)’로 선택했다면, 값(Value)에는 숫자를 입력해야 합니다.
유형과 일치하지 않는 값은 자동으로 텍스트(Text)로 저장됩니다.
추가(Add) 버튼을 클릭하면 사용자 정의 속성이 추가되며, 속성 목록(Properties list)에 표시됩니다.
또한 SpreadJS는 문서 콘텐츠를 속성 값에 연결할 수 있는 내용에 연결(Link to content) 설정을 제공합니다. 이 기능을 사용하면 콘텐츠 값이 변경될 때 문서 속성도 자동으로 업데이트되어 변경된 값을 반영할 수 있습니다. 아래는 이 설정이 어떻게 작동하는지를 보여주는 예시입니다.
예시: 판매 데이터 시트에 여러 테이블과 차트를 포함한 워크북이 있다고 가정해봅니다.
Sheet1의 셀 !B10의 총 판매 금액이 변경될 때마다 자동으로 업데이트되는 "Total Sales"
라는 문서 속성을 생성하려고 합니다.
먼저, Sheet1!$B$10 셀에 대해 사용자 정의 이름(custom name)을 생성합니다.
생성된 사용자 정의 이름은 내용(Contents) 탭과 Named Ranges 섹션에서도 확인할 수 있습니다.
그런 다음 사용자 지정(Custom) 탭으로 이동하여 이름(Name) 필드에 "Total Sales"를 입력하고 내용에 연결(Link to content) 체크박스를 선택합니다.
값(Value)필드에는 앞서 만든 사용자 정의 이름이 표시됩니다.
추가(Add) 버튼을 클릭하면 속성이 속성 목록(Properties list)에 추가되며, 링크 아이콘이 함께 표시되고 해당 셀(Sheet1!$B$10)의 값과 동일한 값을 갖게 됩니다.
이제 Sheet1의 B10의 값이 변경될 때마다 "Total Sales" 문서 속성도 자동으로 업데이트됩니다.
단, 사용자 지정 콘텐츠 링크 속성이 유효하지 않으면 속성 이름 앞에 연결 해제 아이콘이 나타나며, 해당 속성은 삭제만 가능합니다.
확인(OK) 버튼을 클릭하여 속성을 워크북에 저장합니다.
참고:
SpreadJS에서 Excel 파일을 가져오거나 내보낼 때, docProps 속성은 항상 유지되어야 합니다.
가져온 문서에 생성 시간이 있는 경우, 해당 문서의 기존 생성 시간이 그대로 사용됩니다. 그렇지 않은 경우 생성 시간은 없습니다.
새 디자이너를 열 때는 기본적으로 생성 시간이 현재 시각으로 설정됩니다. 이후 새 워크북 추가 버튼을 클릭하면 생성 시간이 최신 시각으로 갱신됩니다.
파일을 가져올 때 SpreadJS는 문서의 수정 시간(modified time)을 사용하고, 파일을 내보낼 때는 수정 시간이 내보낸 시각으로 업데이트됩니다.
사용자가 인쇄(Print) 옵션을 클릭하면, 마지막 인쇄 시간이 현재 시각으로 변경됩니다.