[]
SpreadJS에서는 Worksheet
클래스의 setFormula
메서드를 사용하여 셀에 수식을 설정할 수 있습니다. 아래 이미지는 다양한 수식이 적용된 후 B열에 표시되는 결과 값을 보여줍니다.
다음 코드 샘플은 셀에 수식을 설정하는 예제입니다.
window.onload = function()
{
var spread =
new GC.Spread.Sheets.Workbook(document.getElementById("ss"),
{sheetCount:3});
var activeSheet = spread.getActiveSheet();
activeSheet.setRowCount(5);
activeSheet.setColumnCount(2);
activeSheet.getRange(-1, 1, -1, 1)
.backColor("lightYellow")
.width(120);
activeSheet.setValue(0, 0, 10);
activeSheet.setValue(1, 0, 20);
activeSheet.setValue(2, 0, 30);
activeSheet.setValue(3, 0, 40);
activeSheet.setValue(4, 0, 50);
// SUM 함수 설정 (모든 파라미터 값의 합).
activeSheet.setFormula(0, 1, "SUM(A1:A5)");
// PRODUCT 함수 설정 (모든 파라미터 값의 곱).
activeSheet.setFormula(1, 1, "PRODUCT(A1:A5)");
// AVERAGE 함수 설정 (모든 파라미터 값의 평균).
activeSheet.setFormula(2, 1, "AVERAGE(A1:A5)");
// 셀(0,0)과 셀(4,0)의 합을 계산하는 수식 설정.
activeSheet.setFormula(3, 1, "A1 + A5");
/* 셀(0,0)의 값이 10보다 크면 2를 곱하고, 그렇지 않으면 3을 곱하는 수식 설정 */
activeSheet.setFormula(4, 1, "IF(A1>10, A1*2, A1*3)");
}
다른 시트를 참조하는 수식도 사용할 수 있습니다.
수식을 편집하는 동안 다른 시트를 참조하려면 시트 탭 또는 AllSheetsList 버튼에서 대상 시트를 선택한 후 해당 시트의 셀 범위를 선택합니다. AllSheetsList가 표시되어 있는 동안에는 키보드를 이용해 수식을 편집할 수 없습니다. 리스트 외의 시트를 클릭해 편집 상태를 종료해야 합니다.
예를 들어, 아래 이미지에서는 "Math - Grade 5" 시트의 C5~G5 값들을 참조하여 "Anna Mull" 시트에서 학생의 총점을 계산합니다.
다음 코드 샘플은 교차 시트 참조 수식을 사용하는 예제입니다.
window.onload = function () {
// 스프레드시트 생성
let spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 });
initSpread(spread);
};
function initSpread(spread) {
spread.suspendPaint();
// 템플릿 로드
spread.fromJSON(template);
// Anna Mull 시트에 수식 설정
let sheet = spread.getSheetFromName("Anna Mull")
sheet.setText(3,0,"Average Score");
sheet.setFormula(3,1,"=Average('Math - Grade 5'!C5:G5)");
sheet.setText(4,0,"Total Assignment Score");
sheet.setFormula(4,1, "=Sum('Math - Grade 5'!C5:G5)");
spread.resumePaint();
}
SUBTOTAL 수식을 설정할 수도 있습니다. 아래 이미지는 이를 보여줍니다.
다음 코드 샘플은 SUBTOTAL 수식을 사용하는 예제입니다.
$(document).ready(function ()
{
var spread =
new GC.Spread.Sheets.Workbook(document.getElementById("ss"),
{sheetCount:3});
var activeSheet = spread.getActiveSheet();
activeSheet.setColumnCount(2);
activeSheet.options.colHeaderAutoText = GC.Spread.Sheets.HeaderAutoText.blank;
activeSheet.setText(0, 1, "Value", GC.Spread.Sheets.SheetArea.colHeader);
activeSheet.options.gridline = {showHorizontalGridline: false};
activeSheet.setText(3, 0, "Sub-Total1");
activeSheet.setText(7, 0, "Sub-Total2");
activeSheet.setText(8, 0, "Aggregate");
activeSheet.getRange(3, -1, 1, -1).backColor("lemonChiffon");
activeSheet.getRange(7, -1, 1, -1).backColor("lemonChiffon");
activeSheet.getRange(8, -1, 1, -1).backColor("lightPink");
activeSheet.setValue(0, 1, 100);
activeSheet.setValue(1, 1, 200);
activeSheet.setValue(2, 1, 300);
activeSheet.setValue(4, 1, 400);
activeSheet.setValue(5, 1, 500);
activeSheet.setValue(6, 1, 600);
// SUBTOTAL 함수를 사용해 소계 및 총계 설정
activeSheet.setFormula(3, 1, "SUBTOTAL(9,B1:B3)");
activeSheet.setFormula(7, 1, "SUBTOTAL(9,B5:B7)");
activeSheet.setFormula(8, 1, "SUBTOTAL(9,B1:B7)");
});