조회된 데이터 전체에 대해서 for loop문을 수행하는 것 보다는 가급적 formula를 이용하여 로직을 구성하는 것이 성능적으로 좋습니다.
하지만 formula를 통해 수행하기 어려운 경우라면 어쩔수 없이 행(row)나 열(col) 에 대해서 처음부터 끝까지 Loop문을 만들어 수행해야 하는 경우도 있습니다.
행 단위로 Loop문을 구성할 때는 getDataRows()함수를 통해 전체 데이터 행들을 배열로 받은 후, 배열 안에 각 행의 객체를 접근하는 형태로 로직을 구성할 수 있습니다.
//첫번째 데이터부터 마지막 데이터까지 Loop 문을 수행하면서 특정 열(열이름:CHK)에 체크 된 행 객체를 배열형태로 반환하는 참고용 로직입니다.
//실제로는 getRowsByChecked()함수를 통해 아래와 같은 작업을 수행할 수 있습니다.
//전체 데이터 행을 배열로 얻는다.
var rows = sheet.getDataRows();
var checkRowArr = [];
for (var i = 0; i < rows.length; i++) {
//CHK 열이 체크되어 있으면
if (rows[i]["CHK"] == 1) {
//배열에 넣는다.
checkRowArr.push(row);
}
}
//전체 체크된 행의 개수를 console에 출력
console.log(checkRowArr.length);
열 단위로 Loop문을 구성할 때는 getCols()함수를 통해 전체 열이나, 눈에 보여지는 열, 편집 가능한 열 등을 배열로 받은 후, 배열 안에 각 열이름을 접근하는 형태로 로직을 구성할 수 있습니다.
//첫번째 데이터 행을 기준으로 Loop 문을 수행하여 Type이 Text인 열의 열이름을 배열에 담아 리턴하는 참고용 로직입니다.
//눈에 보여지는 열(감춰진 열 제외)만 추출
var colsArr = sheet.getCols("Visible");
var textColArr = [];
var fRow = sheet.getFirstRow(); //첫번째 행
for (var i = 0; i < colsArr.length; i++) {
//첫번째 행에 전체 열의 타입을 비교하여
if (sheet.getType(fRow,colsArr[i]) === "Text") {
//배열에 넣는다.
textColArr.push(colsArr[i]);
}
}
//Type이 Text인 열들을 console에 출력
console.log(textColArr);
product | version | desc |
---|---|---|
core | 8.0.0.0 | 기능 추가 |