# 파일 저장 대화상자 사용자 정의

## Content

SpreadJS는 사용자가 Spread 디자이너 컴포넌트에서 파일을 가져오고 저장할 때 **파일 저장** 대화상자의 동작을 사용자 정의할 수 있도록 합니다. 이 기능은 사용자가 파일 형식을 선택하고 원하는 파일 이름을 지정할 수 있게 하여 유연성과 효율성을 높여줍니다.

### 기본 동작

기본적으로 Spread 파일에 내용이 있을 경우, 로컬 파일을 가져오면 현재 내용을 저장할지 여부를 묻는 메시지가 표시됩니다. 저장을 선택하면 저장되는 파일의 형식은 가져온 파일의 형식과 일치합니다.
**예시**:

1. 내용이 있는 **Excel 파일**을 가져옵니다.
2. 그런 다음 로컬 시스템에서 **CSV 파일**을 가져옵니다.
    현재 파일 변경 내용을 저장할지 묻는 경고 메시지가 나타납니다.
3. **예**를 클릭합니다.
    **파일 저장** 대화상자에 현재 파일을 저장할 .xlsx 형식이 표시됩니다.

> **참고**: 이전에 파일을 가져온 적이 없으면 내용이 **ssjson**(기본) 형식으로 저장됩니다.

### 파일 저장 형식 사용자 정의하기

`setData` 메서드의 `saveFileType` 매개변수를 사용하여 원하는 파일 저장 형식을 설정할 수 있습니다.
현재 [GC.Spread.Sheets.Designer.FileType](/spreadjs/api/designer/enums/GC.Spread.Sheets.Designer.FileType) 열거형에서는 다음 내보내기 파일 형식만 지원됩니다.
현재 열거형에서는 다음 내보내기 파일 형식만 지원됩니다.

| 형식 | 설명 |
| --- | --- |
| JSON | 파일 저장 형식을 json으로 지정합니다. |
| Excel | 파일 저장 형식을 .xlsx로 지정합니다. |
| CSV | 파일 저장 형식을 .csv로 지정합니다. |
| SJS | 파일 저장 형식을 .sjs로 지정합니다. |

아래와 같이 `setData` 메서드의 `saveFileType` 매개변수를 사용하여 파일 저장 형식을 설정하세요.

```javascript
designer.setData("saveFileType", GC.Spread.Sheets.Designer.FileType.Excel);
```

아래와 같은 결과가 생성되며, 가져온 .csv 파일을 .xlsx 형식으로만 저장할 수 있습니다.
![theme10.94140a.gif](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/theme10.94140a.0b2342.gif?width=1000)

하지만 기본 가져오기/내보내기 저장 규칙으로 되돌리려면 아래와 같이 `saveFileType` 을 **undefined**로 설정할 수 있습니다.

```javascript
designer.setData("saveFileType", undefined);
```

### 파일 이름 사용자 정의하기

기본적으로 **파일 저장** 대화상자는 파일을 내보낼 때 파일 이름을 표시하지 않습니다. `setData` 메서드의 `saveFileName` 매개변수를 사용하여 원하는 파일 이름을 설정할 수 있습니다.

```javascript
designer.setData("saveFileName", "New File");
```

아래와 같은 결과가 생성됩니다.
![image.2b8fdf.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/image.2b8fdf.84d463.png?width=300)

> **참고**:
> 파일 이름은 다음과 같은 시스템 규칙을 따라야 합니다:
>
> * 파일 이름은 항상 문자열이어야 합니다.
> * Windows에서는 최대 길이가 255자여야 합니다.
> * `<`, `>` 등의 기호 문자는 사용하지 마세요.
> * 시스템에서 예약된 이름은 사용하지 마세요.