# 테이블 시트 IO

## Content

테이블 시트는 **JSON, Excel, PDF 등 다양한 형식으로 내보내기**를 지원하며, 일반 스프레드시트처럼 **인쇄**도 가능합니다.

## JSON 직렬화

테이블 시트의 **JSON 직렬화 및 역직렬화**는 `workbook` 객체의 `toJSON` 및 `fromJSON` 메서드를 사용하여 수행됩니다.

```javascript
function saveJSON() {
 // JSON 저장
    var json = spread.toJSON({ includeBindingSource: true, saveAsView: true });
    saveAs(new Blob([JSON.stringify(json)], { type: "text/plain;charset=utf-8" }), 'exportedJSON.ssjson');
}

function openJSON() {
    // JSON 불러오기
    var file = document.getElementById("fileDemo").files[0];
    if (file) {
        var reader = new FileReader();
        reader.onload = function () {
            var json = JSON.parse(this.result);
            spread.fromJSON(json);
        };
        reader.readAsText(file);
    }
}
```

## Excel 파일 내보내기

테이블 시트를 Excel로 내보내는 작업은 `GC.Spread.Excel.IO`의 [save](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook#save) 메서드를 사용하여 수행됩니다. 테이블 시트는 워크시트 내의 **테이블 형태로 변환**되며, `saveAsView`를 `true`로 설정하면 `alternatingRowStyles`와 조건부 서식 결과도 포함됩니다.
단, 아이콘 세트, 데이터 막대, 데이터 유효성 검사는 제외됩니다.

Excel로 내보낼 때는 `includeBindingSource: true`를 반드시 설정해야 하며, `saveAsView: true`는 선택 사항입니다.

```javascript
function saveExcel() {
 // Excel 저장
    var excelIo = new GC.Spread.Excel.IO();
    var json = spread.toJSON({ includeBindingSource: true, saveAsView: true });
    excelIo.save(json, function (blob) {
        saveAs(blob, "exportedExcel.xlsx");
    }, function (e) {
        console.log(e);
    });
}
```

## PDF 내보내기

테이블 시트를 PDF로 내보내는 작업은 `workbook` 객체의 [savePDF](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook#savePDF) 메서드를 사용하여 수행됩니다. PDF에는 **바인딩된 결과**가 포함되며, **아이콘, 옵션, 액션 열**은 포함되지 않습니다.

PDF로 내보내거나 인쇄할 때는 [printInfo](/spreadjs/api/v18/classes/GC.Spread.Sheets.Print.PrintInfo) 메서드를 사용하여 **출력 설정을 사용자 정의**할 수 있습니다.

```javascript
function savePDF() {
    // PDF 저장
    spread.savePDF(function (blob) {
        saveAs(blob, "exportedPDF.pdf");
    }, function (error) {
        console.log(error);
    }, null, spread.getSheetCount() + spread.getActiveSheetTabIndex());
}
```

## 테이블 시트 인쇄

테이블 시트 인쇄는 `workbook` 객체의 [print](/spreadjs/api/v18/classes/GC.Spread.Sheets.Workbook#print) 메서드를 사용하여 수행됩니다. **바인딩된 결과는 포함**되며, **아이콘, 옵션, 액션 열은 제외**됩니다.

```javascript
function print() {
    // Spread 프린트
    spread.print();
}
```