# 핀 고정

## Content

고정(pin) 옵션은 템플릿 시트에서 확산(spill)된 셀의 오프셋을 제거하는 데 사용됩니다.
셀 확산 이후, 리포트 레이아웃이 변경될 수 있습니다. 이러한 경우, 템플릿 시트에서 셀을 고정하여 확산된 셀의 오프셋을 제거할 수 있습니다. [Spread.Report.TemplateSheet](/spreadjs/api/classes/GC.Spread.Report.TemplateSheet) 클래스의 `setTemplateCell` 메서드에서 `pin` 속성을 사용하여 고정 옵션을 설정할 수 있습니다.
`pin` 속성에서 사용할 수 있는 옵션은 다음과 같습니다:

* `None`
* `Row`
* `Column`
* `Both`
    기본값은 `None`입니다.

> **참고:**
>
> * 고정 옵션은 부모가 없는 Static 셀에서만 작동하며, Static 셀은 확산된 셀 트리 범위와 겹치지 않아야 합니다.
> * 열 고정을 위해서는 해당 행에 확산된 셀이 없어야 합니다.
> * 행 고정을 위해서는 해당 열에 확산된 셀이 없어야 합니다.

다음은 고정 옵션이 확산된 셀의 오프셋을 제거하는 방법을 설명하는 예제입니다.
이 예제에서는 `Orders` 데이터 테이블을 데이터 소스로 사용하며, `shipCountry` 필드를 이용해 템플릿 셀과 데이터 소스 간의 바인딩을 수행합니다.
**예제 1: 열(Column) 오프셋 제거**

1. 다음 템플릿을 리포트 시트에 로드합니다:

    ```javascript
    templateSheet.setTemplateCell(1, 0, {
        type: 'Group',
        binding: 'Orders[shipCountry]',
        spillDirection: 'Horizontal',
    });
    templateSheet.setValue(0, 1, 2023);
    ```

    위 코드의 출력은 다음과 같습니다:
    ![image](https://cdn.mescius.io/document-site-files/images/ef9b66d1-0ae2-4e94-b8cb-f9f893aacc8d/Clear%20Column%20Offset.2a499f.png)
<br>
2. 셀 B1(값: 2023)을 원래 위치에 유지하려면 셀 A1을 고정합니다:

    ```javascript
    templateSheet.setTemplateCell(0, 0, {
        pin: 'Column',
    });
    ```

    템플릿은 다음과 같이 보입니다:
<br>
    ![image](https://cdn.mescius.io/document-site-files/images/ef9b66d1-0ae2-4e94-b8cb-f9f893aacc8d/Clear%20Column%20Offset%201.d5acc8.png?width=400)
<br>
3. 고정된 셀이 적용된 경우 리포트는 다음과 같이 생성됩니다:
<br>
    ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/d37fbce1-6a37-43ce-b728-dd79fba68421/image.fdfff0.png?width=1000)

**예제 2: 행(Row) 오프셋 제거**

1. 다음 템플릿을 리포트 시트에 로드합니다:

    ```javascript
    templateSheet.setTemplateCell(0, 1, {
        type: 'Group',
        binding: 'Orders[shipCountry]',
    });
    templateSheet.setValue(1, 0, 2023);
    ```

    위 코드의 출력은 다음과 같습니다:
<br>
    ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/d37fbce1-6a37-43ce-b728-dd79fba68421/image.8d4a00.png?width=150)
<br>
2. 셀 A2(값: 2023)를 원래 위치에 유지하려면 셀 A1을 고정합니다:

    ```javascript
    templateSheet.setTemplateCell(0, 0, {
        pin: 'Row',
    });
    ```

    템플릿은 다음과 같이 보입니다:
<br>
    ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/d37fbce1-6a37-43ce-b728-dd79fba68421/image.50d670.png?width=400)
<br>
3. 고정된 셀이 적용된 경우 리포트는 다음과 같이 생성됩니다:
<br>
    ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/d37fbce1-6a37-43ce-b728-dd79fba68421/image.6293c7.png?width=150)