# 내보내기 시 수식 유지

## Content

**내보내기 시 수식 유지** 기능을 사용하면 데이터를 Excel로 내보낼 때 수식을 그대로 유지할 수 있습니다.

## 사용 시나리오

보고서를 내보낼 때, 개발자들은 계산된 필드나 수식이 정적인 값으로 변환되는 문제를 자주 겪습니다. 이로 인해 결과 Excel 파일에서 동적인 동작이 깨지고, 사용자가 수식을 다시 입력하거나 재구성해야 하는 번거로움이 발생합니다.
**내보내기 시 수식 유지** 기능을 사용하면 이러한 문제를 피할 수 있습니다.

* **계산 유지:** 데이터셋, 템플릿 또는 계산 필드에 정의된 수식이 내보낸 후에도 그대로 유지되어, Excel 사용자가 고정된 숫자가 아닌 실시간 계산을 계속 사용할 수 있습니다.
* **편집 가능한 Excel 출력:** 내보낸 워크북에서 최종 사용자는 셀 값이나 범위를 조정할 수 있으며, 종속된 수식은 원래 환경과 동일하게 자동으로 업데이트됩니다.

## 관련 API

이 기능은 [GC.Spread.Report.TemplateSheet.setTemplateCell ](/spreadjs/api/classes/GC.Spread.Report.TemplateSheet#settemplatecell) 메서드를 통해 설정합니다.
`StaticCell`에 설정할 경우 `preserveFormulaInExport` 속성을 사용합니다.

```typescript
export type StaticCell = {
    type: 'Static',
    preserveFormulaInExport?: boolean;
    // 다른 속성은 API 참조를 확인하세요
};
```

>type=note
> **참고 사항:**
>
> * 수식 유지는 **미리보기 모드**에서만 사용할 수 있습니다.
> * 이 기능은 관련 [옵션](/spreadjs/api/classes/GC.Spread.Sheets.Workbook#options)이 올바르게 설정된 경우에만 적용됩니다.

## 수식 내보내기 동작 방식

| **수식 유형** | **조건** | **내보내기 동작** | **예시** |
| ----- | --- | ------- | --- |
| 표준 Excel 함수 | 확장된 셀 범위가 연속적인 경우 | 참조가 단일 범위로 내보내집니다. | ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.41bc2d.png?width=500) |
|  | 확장된 셀 범위가 비연속적인 경우 | 지원되는 함수(`SUM`, `AVERAGE`, `MIN`, `MAX`, `COUNT`, `COUNTA`, `COUNTBLANK`)는 여러 범위로 내보내집니다. | ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.265744.png?width=500) |
| R.V 수식 | 미리보기 모드에서 해석 가능한 경우 | 실제 셀 참조로 변환됩니다. | ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.06790f.png?width=500) |
|  | 해석할 수 없는 경우 | 빈 셀로 내보내집니다. | ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.f7f056.png?width=500) |
|  | 표현식 내에서 부분적으로만 해석 가능한 경우 | 'SJS.EMPTY\_CELL'<br>(값 = 0)으로 대체됩니다. | ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.756265.png?width=500) |
| SpreadJS 리포트시트 전용 수식 | `R.Index`, `R.Rank`, `R.MoM`, `R.YoY`, `R.Proportion`, `R.Cumulative` 등의 함수 | <ul><li>내보내기 시 함수 이름과 참조가 유지됩니다.</li><li>Excel에서는 ‘#NAME?’(미지원)로 표시됩니다.</li></ul> | ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.c1c253.png?width=500) |

## 사용 예제

```javascript
const templateSheet = reportSheet.getTemplate();
templateSheet.setFormula(3, 3, '=SUM(D2)');

// preserveFormulaInExport를 true로 설정
templateSheet.setTemplateCell(3, 3, {
  type: 'Static',
  preserveFormulaInExport: true,
});
```

## 디자이너 사용

SpreadJS 디자이너의 **Report Cell** 속성 패널에 있는 **내보내기 시 수식 유지(Preserve Formula In Export)** 옵션을 사용하여 템플릿 셀의 `preserveFormulaInExport` 속성을 설정할 수도 있습니다.
![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20251216.cd9ba5.png?width=400)