# calculate (method)

> 시트에 설정된 Formula 및 속성(attribute+Formula) 계산을 시트 전체에 대해 실행합니다.
> 부분 재계산이 필요한 경우 recalculate 또는 recalculateRows를 사용하세요.

### Syntax

    void calculate( render, calconly, fixedonly );

### Parameters

Name | Type | Required | Description
--- | --- | --- | ---
render | `boolean` | 선택 | Formula 컬럼 화면 반영 여부 (일반 컬럼은 `rerender()` 별도 호출 필요) `0(false)`:반영 안 함 `1(true)`:Formula 컬럼만 즉시 반영 (`default`)
calconly | `boolean` | 선택 | `Row.CanFormula = 1` 인 행만 계산할 지 여부 `0(false)`:전체 행 계산 (`default`) `1(true)`:`Row.CanFormula = 1` 인 행들만 계산
fixedonly | `boolean` | 선택 | `Fixed` 행들(`Header, Filter, FormulaRow`)만 계산할지 여부 `0(false)`:전체 행 계산 (`default`) `1(true)`:`Fixed` 행들(`Header, Filter, FormulaRow`)만 계산

> 일반 + Formula 컬럼 모두 변경 시 `calculate(true)` + `rerender(1)`은 렌더 2회 발생.
> `calculate(false)` + `rerender(1)`로 일괄 반영이 성능상 유리.

### Return Value

none

### Example

    // 외부에서 여러 행의 값을 일괄 변경 후 시트 전체 재계산
    // setValue를 calc:0/render:0으로 호출 → 마지막에 calculate + rerender로 일괄 마무리
    var rows = sheet.getDataRows();
    for (var i = 0; i < rows.length; i++) {
        sheet.setValue({row: rows[i], col: "Discount", val: 0.1, calc: 0, render: 0});
    }
    sheet.calculate(false, false);   // Formula 계산만 (render=true면 Formula 컬럼만 반영 → 렌더 2회 발생)
    sheet.rerender(1);               // 모든 변경 화면 일괄 반영 (렌더 1회로 마무리)

### Read More

- Formula col
- attribute+Formula col
- attribute+Formula row
- CanFormula row
- CalcOrder row
- NoCalculate row
- FormulaRow col

### Since

product | version | desc
--- | --- | ---
core | 8.0.0.0 | 기능 추가
core | 8.0.0.8 | `render` 인자 `default` 값 변경(`false -> true`)
core | 8.0.0.11 | `fixedonly` 추가