# 리포트 시트 가져오기/내보내기

## Content

리포트 시트는 JSON, SJS, Excel 등 다양한 형식으로 내보내기 및 가져오기를 지원합니다.

>type=warning
> **참고**: 리포트 시트 가져오기/내보내기 기능을 사용하려면 가져오기/내보내기 작업에 기반한 특정 스크립트 파일을 참조해야 합니다. 예를 들면 다음과 같습니다:
>
> * \<script src="scripts/gc.spread.sheets.print.x.x.x.min.js">\</script>
> * \<script src="scripts/gc.spread.sheets.io.x.x.x.min.js">\</script>

## JSON 내보내기

리포트 시트의 JSON 직렬화를 위해 [GC.Spread.Sheets.Workbook](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook) 클래스의 `toJSON` 메서드를 사용합니다.
다음 코드는 Spread 컨트롤에서 JSON 파일을 내보내는 방법을 보여줍니다

```javascript
// JSON 파일 내보내기
let json = spread.toJSON();
let content = JSON.stringify(json);
let blob = new Blob([content], { type: "application/json;charset=utf-8" });
let fileNameNode = document.getElementById('json-name');
saveAs(blob, (fileNameNode.value || 'report') + ".json");
```

## SJS 내보내기

리포트 시트 데이터를 SJS로 내보내려면 [GC.Spread.Sheets.Workbook](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook) 클래스의 `save` 메서드를 사용합니다.
다음 코드는 Spread 컨트롤에서 SJS 파일을 내보내는 방법을 보여줍니다:

```javascript
// .sjs 파일 내보내기
let fileNameNode = document.getElementById('sjs-name');
spread.save(function (blob) {
    saveAs(blob, (fileNameNode.value || 'report') + ".sjs");
}, function (e) {
    console.log(e);
}, {});
```

## Excel 내보내기

리포트 시트 데이터를 Excel로 내보내려면 [GC.Spread.Sheets.Workbook](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook) 클래스의 `export` 메서드를 사용합니다.
다음 코드는 Spread 컨트롤에서 Excel 파일을 내보내는 방법을 보여줍니다:

```javascript
// Excel 파일 내보내기
let fileNameNode = document.getElementById('excel-name');
spread.export(
       (blob) => {
              saveAs(blob, (fileNameNode.value || 'report') + ".xlsx");
        },
        null,
        {
              fileType: GC.Spread.Sheets.FileType.excel,
        }
 );
```

## JSON 가져오기

리포트 시트의 JSON 역직렬화를 위해 [GC.Spread.Sheets.Workbook](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook)클래스의 `fromJSON` 메서드를 사용해야 합니다.
다음 코드는 Spread 컴포넌트에서 JSON 파일을 가져오는 방법을 보여줍니다:

```javascript
// JSON 파일 가져오기
const file = ei.target.files[0];
if (file) {
      if (!file.type || file.type === 'application/json') {
            const reader = new FileReader();
            reader.readAsText(file, "UTF-8");
            reader.onload = function (evt) {
                   const fileString = evt.target.result;
                   const jsonObj = JSON.parse(fileString);
                   spread.fromJSON(jsonObj);
            };
       }
}
```

## SJS 가져오기

SJS 형식의 리포트를 열려면 [GC.Spread.Sheets.Workbook](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook) 클래스의 `open` 메서드를 사용합니다.
다음 코드는 사용자가 SJS 파일을 선택하고 Spread 컴포넌트에 여는 방법을 보여줍니다:

```javascript
// SJS 파일 가져오기
const file = ei.target.files[0];
if (file) {
      spread.open(file, function () { }, function () { }, {});
}
```

## Excel 가져오기

Excel 형식의 리포트를 가져오려면 [GC.Spread.Sheets.Workbook](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook) 클래스의 `import` 메서드를 사용합니다.
다음 코드는 사용자가 Excel 파일을 선택하고 Spread 컴포넌트에 가져오는 방법을 보여줍니다:

```javascript
// Excel 파일 가져오기
const file = ei.target.files[0];
if (file) {
         spread.import(file, function () {
         }, function () { }, {
               fileType: GC.Spread.Sheets.FileType.excel
         })
}
```