# 셀 꾸미기

## Content

SpreadJS에서는 `decoration` 객체를 사용하여 셀 또는 셀 범위에 꾸미기를 적용할 수 있습니다. 데코레이션 객체에는 모서리 폴드나 아이콘과 같은 설정을 포함할 수 있습니다.

## **모서리 폴드 설정**

SpreadJS는 셀의 모서리에 모서리 폴드 스타일을 설정하는 기능을 제공합니다. 모서리 폴드 기능은 셀 상태를 강조할 때 유용하며, 예를 들어 셀이 유효하지 않음을 나타내고자 할 때 사용할 수 있습니다.
**[IDecoration](https://developer.mescius.com/spreadjs/api/interfaces/GC.Spread.Sheets.IDecoration)** 인터페이스는 **cornerFold** 옵션을 제공하며, 이를 통해 접힘의 크기(size), 위치(position), 색상(color)을 설정할 수 있습니다. 이 옵션은 **[ICornerFold](https://developer.mescius.com/spreadjs/api/interfaces/GC.Spread.Sheets.ICornerFold)** 인터페이스에서 상속되며, 해당 인터페이스는 `size`, `position`, `color` 등의 매개변수를 제공합니다.
아래 스냅샷은 셀 B6과 B8에 `왼쪽 상단` 위치의 주황색 corner fold 스타일이 적용된 모습을 보여줍니다.
![cornerfold-styling.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/8d606653-16a0-474d-b9dc-e2b4d01c2446/cornerfold-styling.962a1e.png)
cornerFold 옵션의 기본값은 다음과 같습니다:

| 크기 | 위치 | 색상 |
| --- | --- | --- |
| 6 | GC.Spread.Sheets.CornerPosition.leftTop | #FF3D00 |

다음 코드 구현은 **ICornerFold** 인터페이스와 **setStyle**메서드를 사용하여 corner fold 스타일을 설정하는 방법을 보여줍니다.

```JavaScript
var style = new GC.Spread.Sheets.Style();
style.decoration = {
    cornerFold: {
        size: 10,
        position: GC.Spread.Sheets.CornerPosition.leftTop,
        color: "orange"
    }
}
sheet.setStyle(5, 1, style);
```

## **아이콘 설정**

SpreadJS는 **<span class="NormalTextRun SpellingErrorV2Themed SCXW224387657 BCX0" style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent; background-repeat: repeat-x; background-position: left bottom; background-image: var(--urlSpellingErrorV2, url(data\:image\/svg\+xml\;base64\,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNXB4IiBoZWlnaHQ9IjRweCIgdmlld0JveD0iMCAwIDUgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTYuMiAoODE2NzIpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPnNwZWxsaW5nX3NxdWlnZ2xlPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IkZsYWdzIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAxMC4wMDAwMDAsIC0yOTYuMDAwMDAwKSIgaWQ9InNwZWxsaW5nX3NxdWlnZ2xlIj4KICAgICAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAxMC4wMDAwMDAsIDI5Ni4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDMgQzEuMjUsMyAxLjI1LDEgMi41LDEgQzMuNzUsMSAzLjc1LDMgNSwzIiBpZD0iUGF0aCIgc3Ryb2tlPSIjRUIwMDAwIiBzdHJva2Utd2lkdGg9IjEiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIHg9IjAiIHk9IjAiIHdpZHRoPSI1IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc\+)); border-bottom: 1px solid transparent;">GC.Spread.Sheets.Style</span>** 클래스의 `icons` 속성을 사용하여 셀 안 또는 셀 바깥에 아이콘을 삽입할 수 있는 아이콘 데코레이션 기능을 지원합니다.
텍스트나 값을 포함한 셀 타입에는 아이콘을 적용할 수 있지만, 체크박스나 콤보박스 같은 셀 타입에는 `icons` 속성이 지원되지 않습니다.
![styleicondecoration](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/styleicondecoration.4e82ef.png?width=500)
SpreadJS는 `src`, `width`, `height`, `position` 등 다양한 아이콘 데코레이션 옵션을 제공합니다.
아이콘의 위치를 지정하려면 다음과 같은 `IconPosition` 열거형 값을 사용할 수 있습니다:

| **이름** | **설명** |
| --- | --- |
| `left` | 셀 내부 왼쪽에 표시 |
| `right` | 셀 내부 오른쪽에 표시 |
| `leftOfText` | 텍스트 왼쪽에 표시<br>※ 텍스트가 없으면 아이콘이 숨겨짐 |
| `rightOfText` | 텍스트 오른쪽에 표시<br>※ 텍스트가 없으면 아이콘이 숨겨짐 |
| `outsideLeft` | 셀 외부 왼쪽에 표시<br>※ 셀이 숨겨지면 아이콘도 숨겨짐 |
| `outsideRight` | 셀 외부 오른쪽에 표시<br>※ 셀이 숨겨지면 아이콘도 숨겨짐 |

다음 코드 샘플은 셀에 아이콘을 스타일링하는 방법을 보여줍니다:

```javascript
//셀 왼쪽
style = new GC.Spread.Sheets.Style();
style.decoration = {
    icons: [
         {
           src: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ0cmFuc3BhcmVudCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcgOUg1TDUgNS45NjA0NmUtMDhIN0w3IDlaTTYgMTBDNi41NTIyOCAxMCA3IDEwLjQ0NzcgNyAxMUM3IDExLjU1MjMgNi41NTIyOCAxMiA2IDEyQzUuNDQ3NzIgMTIgNSAxMS41NTIzIDUgMTFDNSAxMC40NDc3IDUuNDQ3NzIgMTAgNiAxMFoiIGZpbGw9IiNFNjUyNDkiLz4KPC9zdmc+Cg==',
            position: GC.Spread.Sheets.IconPosition.left
          }
       ]
   };
 setIcon(1, 1, style); 
```

>type=warning
> <span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" data-ccp-parastyle="No Spacing" class="NormalTextRun SCXW2000418 BCX0"> </span>**참고:**
>
> * `leftOfText` 및 `rightOfText` 위치 값은 텍스트 셀에만 적용됩니다.
> * 현재 보기 영역을 벗어난 아이콘은 인접 열에만 영향을 줍니다.
> * 데코레이션이 여러 개의 아이콘을 지원하는 경우, 아이콘은 위치 설정과 관계없이 나란히 표시됩니다.
> * 셀 정렬 설정은 아이콘의 수직 정렬에 영향을 줍니다.
> * 스타일 데코레이션 아이콘이 있는 셀은 텍스트 오버플로우가 불가능합니다.

### <span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 32px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" class="NormalTextRun SCXW74427685 BCX0">디자이너 사용</span><span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 19.425px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent; color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 11pt; font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif;" data-ccp-props="{134233117:false,134233118:false,201341983:0,335551550:1,335551620:1,335559737:0,335559738:0,335559739:160,335559740:259}" class="EOP SCXW74427685 BCX0"> </span>

SpreadJS 디자이너를 사용하여 셀에 아이콘을 추가하려면 다음 단계를 따르세요:

1. 셀 선택합니다.
2. 셀을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 **셀 서식...(Format Cells...)** 옵션을 선택합니다.
    스프레드시트에서 **셀 서식(Format Cells)** 대화 상자가 열립니다.
    **꾸미기(Decoration)** 탭으로 이동하여 속성을 설정합니다.

![icon-formatcell](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/icon-formatcell.f5dcf2.png?width=500)

### <span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 32px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" class="NormalTextRun SCXW198341756 BCX0">아이콘 옵션 추가/업데이트</span>

1. **<span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" class="NormalTextRun SCXW172333013 BCX0">추가(A</span>dd)** 버튼을 클릭하여 새 아이콘 옵션을 추가하거나, `src`, `position`, `width`, `height` 값을 선택하여 아이콘을 업데이트합니다.
    ![icon-add](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/icon-add.c7b6ff.png?width=400)
2. **<span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" class="NormalTextRun SCXW247650568 BCX0">아이콘 선택(Select Icon)</span>** <span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" class="NormalTextRun SCXW247650568 BCX0">옵션을 클릭하여 아이콘의 위치를 탐색합니다.</span>
    ![icon-add-src](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/icon-add-src.f2326f.png?width=400)
3. **<span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px;" class="NormalTextRun SCXW83380492 BCX0">위치(Position)</span>**<span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px;" class="NormalTextRun SCXW83380492 BCX0"> 콤보박스(선택 사항)를 사용하여 위치를 지정할 수 있습니다.</span>
    ![icon-position](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/icon-position.20755d.png?width=400)
4. **너비(Width)** 및 **높이(Height)** 스핀 버튼을 사용하여 아이콘의 너비와 높이를 조절할 수 있습니다.
    ![icon-width-height](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/icon-width-height.fc457b.png?width=400)

### <span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 32px; user-select: text; -webkit-user-drag: none; -webkit-tap-highlight-color: transparent;" class="NormalTextRun SCXW191505083 BCX0">아이콘 옵션 삭제</span>

1. 삭제할 옵션을 선택합니다.
    ![icon-delete](https://grapecity-document-site.azurewebsites.net/DOCUMENT_SITE_LINK_PREFIX_HERE/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/icon-delete.77803b.png?width=400)
2. **<span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px;" class="NormalTextRun SCXW125295353 BCX0">삭제(Delete)</span>** <span style="box-sizing: content-box; margin: 0px; padding: 0px; transition: filter 0.5s ease-in-out 0s; line-height: 25.6px;" class="NormalTextRun SCXW125295353 BCX0">버튼을 클릭하여 선택한 옵션을 제거합니다.</span>