[]
        
(Showing Draft Content)

사용자 정의 수식 생성

일반적으로 자주 사용하는 함수가 내장 함수에 포함되어 있지 않거나, 여러 내장 함수를 하나의 함수로 결합하고 싶은 경우, 사용자 정의 함수를 정의하여 사용할 수 있습니다. 이러한 함수는 내장 함수처럼 호출하여 사용할 수 있습니다.

이러한 사용자 정의 함수는 지정된 값 또는 배열을 반환할 수 있습니다. 이는 아래 섹션에서 설명합니다:

사용자 정의 함수에서 단일 값 반환

다음 코드 샘플은 값을 반환하는 사용자 정의 함수를 생성합니다.

var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"),{sheetCount:3});
var activeSheet = spread.getActiveSheet();
// 사용자 정의 함수 추가
// 셀에 =myfunc(1) 입력하여 결과 확인
function myfunc() {}
myfunc.prototype = new GC.Spread.CalcEngine.Functions.Function("myfunc", 0, 0, {name: "myfunc",description: "This is my first function"});
myfunc.prototype.evaluate = function (args) {
return 100;}
spread.addCustomFunction(new myfunc());

사용자 정의 함수에서 배열 반환

다음 코드 샘플은 배열을 반환하는 사용자 정의 함수를 생성합니다.

$(document).ready(function () {
 // Spread 초기화
    var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
    // 활성 시트 가져오기
    var sheet = spread.getSheet(0);
    // 동적 배열 허용
    spread.options.allowDynamicArray = true;
    // 팩토리얼 함수 생성
    function FactorialFunction() {
        this.name = "FACTORIAL";
        this.maxArgs = 1;
        this.minArgs = 1;
    }
    FactorialFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
    // 수식 결과 계산
    FactorialFunction.prototype.evaluate = function (arg) {
        var t = 1;
        var result = [];
        if (arguments.length === 1 && !isNaN(parseInt(arg))) {
            for (var i = 1; i <= arg; i++) {
                t = i * t;
                result.push(t);
            }
            // CALCArray 객체를 결과로 반환
            return new GC.Spread.CalcEngine.CalcArray([result]);
        }
        return "#VALUE!";
    };
    // 사용자 정의 함수에 설명 추가
    FactorialFunction.prototype.description = function () {
        return {
            name: "FACTORIAL",
            description:
                "이 함수는 1부터 입력 숫자까지의 팩토리얼을 계산하여 한 행의 여러 셀에 출력합니다",
        };
    };
    var factorial = new FactorialFunction();
    sheet.addCustomFunction(factorial);
    // 셀(0,0)을 기준으로 3열 병합
    sheet.addSpan(0, 0, 1, 7, GC.Spread.Sheets.SheetArea.viewport);
    sheet.setValue(0, 0, "이 사용자 정의 팩토리얼 함수는 1부터 7까지의 팩토리얼을 계산합니다");
    for (var i = 1; i < 8; i++) {
        sheet.setText(2, i - 1, i + "!");
    }
    // 사용자 정의 수식 설정
    sheet.setFormula(3, 0, "=Factorial(7)");
    var style = new GC.Spread.Sheets.Style();
    style.font = "bold 12px Arial";
    style.foreColor = "white";
    style.backColor = "#5B9BD5";
    style.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
    style.vAlign = GC.Spread.Sheets.VerticalAlign.center;
    sheet.setStyle(0, 0, style, GC.Spread.Sheets.SheetArea.viewport);
});