! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

spreadJS maxCols 를 이용한 셀서식 지정 문제 > Q&A | 토론

본문 바로가기

기타 spreadJS maxCols 를 이용한 셀서식 지정 문제

페이지 정보

작성자 HOONHEE 작성일 2023-08-21 10:38 조회 195회 댓글 0건
제품 버전 : 11.1.1
컨트롤 이름 : spreadJS

본문

안녕하십니까.

고객사 운영 중 SrpeadJS 셀 서식 지정 관련하여, 문제가 생겨 문의 드립니다.


maxCols 를 이용하여, spreadJS의 끝 열을 찾아 셀서식을 지정 중.. 

아래 함수를 이용해, 현재의 maxCols를 갖져와 숫자 포맷의 서식을 지정함(천단위 구분자 등)

열의 갯수가 적을 때는 문제 없이 서식이 적용되나, 50열 을 지나서 표현되는 열에는 

설정한 쎌 서식이 전혀 없는 값으로 보여지는 문제가 있습니다.


혹시 아래 11 버젼에 열 서식 지정 관련 한계가 있나요?

있다면 해결 방법은 무엇인지 문의 드립니다.


(동적 화면으로 maxcols 를 사용 할 수 밖에 없습니다. )


 function OnSpread() {

        fpSpread.ReDraw = false;

        initSheet(fpSpread);

        setCellHeight(fpSpread, SPREAD_HEADER, ROW_HEIGHT_TITLE+10);

        var maxCols = parseInt("<%=maxCols%>");

//alert(maxCols);

        setCellLockAll(fpSpread, 1, maxCols, LOCK);

       

        setCellWidthAll(fpSpread, 1, 7, 9);

       

        setCellWidthAll(fpSpread, 8, maxCols, 15);

        setCellTypeAll(fpSpread, 8, maxCols, CTYPE_NUMBER, HALIGN_RIGHT);

       

        fpSpread.ColsFrozen = 7;

        setHiddenCol(maxCols, true);

        <tlt:spreadCellHttp spreadName="fpSpread" />

        <tlt:trMessage messageSet="trMessageSet"/>

       

        fpSpread.ReDraw = true;

        parent.BtnOn();

    }




function setCellTypeAll(spreadObject, col, col2, intCellType, intAlign, maxLen) {
for (var i = col; i <= col2; i++) {
this.setCellType(spreadObject, i, -1, intCellType, intAlign, maxLen);
}
//alert("celltypeall col2: " + col2);
}
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

1 답변

기타 Re: spreadJS maxCols 를 이용한 셀서식 지정 문제

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 GCK루카스 작성일 2023-08-21 16:35 댓글 1건

본문

안녕하세요 그레이프시티입니다.


첨부해주신 setCellTypeAll() 메소드 안에서 사용되고 있는 this.setCellType() 메소드는 SpreadJS에서 지원하는 메소드가 아닌 자체적으로 작성하신 메소드로 보여집니다.

작성하신 setCellType() 함수를 확인해 보시거나, 공유해 주시면 확인 도와드리도록 하겠습니다.


감사합니다.

그레이프시티 드림

댓글목록

HOONHEE님의 댓글

HOONHEE 작성일

아 답변 감사드립니다.
정신이 없어 이제야 회신 남깁니다.

/**
 * 지정된 범위의 셀에 셀 유형을 설정한다.
 * @param {Object} spreadObject SpreadJS를 감싸고 있는 Division
 * @param {Number} col 적용될 첫 열
 * @param {Number} row 적용될 첫 행 
 * @param {Number} intCellType 셀 유형(CellType Property)
 * @param {Number} intAlign 셀 수평 정렬
 * @param {Number} maxLen 최대 길이
 */
function setCellType(spreadObject, col, row, intCellType, intAlign, maxLen) {
var obj = spreadObject.Bean;
var activeSheet = obj.getActiveSheet();
    var vSpreadJSHAlign = intAlign;
   
// 기존 ActivcX와 SpreadJS의 값이 다르기 때문에 치환해야 함
    // HALIGN_RIGHT : 1 -> 2, HALIGN_CENTER : 2 -> 1
    if(intAlign == this.HALIGN_RIGHT)
    vSpreadJSHAlign = 2;
    else if(intAlign == this.HALIGN_CENTER)
    vSpreadJSHAlign = 1;
var vSpreadJSIndex = this.getSpreadJSIndex(spreadObject, row, row, col, col);
var vRow = vSpreadJSIndex.Row;
var vRow2 = vSpreadJSIndex.Row2;
var vCol = vSpreadJSIndex.Col;
var vCol2 = vSpreadJSIndex.Col2;
var cellType = new GC.Spread.Sheets.CellTypes.Text();
var format = "@";
// 버튼 Type
if (intCellType == this.CTYPE_BUTTON) {
cellType = new GC.Spread.Sheets.CellTypes.Button();
// 콤보박스 Type
} else if(intCellType == this.CTYPE_COMBO) {
cellType = new GC.Spread.Sheets.CellTypes.ComboBox();
cellType.editable(false);
// 체크박스 Type
} else if(intCellType == this.CTYPE_CHECK) {
cellType = new GC.Spread.Sheets.CellTypes.CheckBox();
// 날짜 Type
} else if(intCellType == this.CTYPE_DATE) {
format = "yyyy-MM-dd";
// Number Type
} else if(intCellType == this.CTYPE_NUMBER) {
format = "#,##0";
// 시간 Type
} else if(intCellType == this.CTYPE_TIME) {
format = "yyyy-MM-dd hh:mm:ss";
// 백분율
} else if(intCellType == this.CTYPE_PERCENT) {
cellType = new PercentageCellType();
format = "#0.00%";
}
var dv = null;
// Number Type일 경우 최대값, 최소값에 대한 범위 검증을 한다.
if(intCellType == this.CTYPE_NUMBER) {
if(maxLen == null || maxLen < 1){
maxLen = this.NUMBER_MAX;
}
dv = GC.Spread.Sheets.DataValidation.createNumberValidator(GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.Between, this.NUMBER_MIN, maxLen, false);
dv.errorMessage("The value entered exceeded the allowed range.");
dv.showErrorMessage(true);
} else if(intCellType == this.CTYPE_EDIT || intCellType == this.CTYPE_STATIC_TEXT) {
if(maxLen == null || maxLen < 1){
maxLen = this.EDIT_MAX_NEN;
}
dv = GC.Spread.Sheets.DataValidation.createTextLengthValidator(GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.LessThanOrEqualsTo, maxLen);
dv.errorMessage("The number of entered characters exceeds the maximum number of allowed characters.");
dv.showErrorMessage(true);
}
var isReDraw = reDraw(spreadObject);
if(isReDraw)
reDraw(spreadObject, false);
    for (var i = vCol; i <= vCol2; i++) {
   
    if(row != -1) {
   
    for (var j = vRow; j <= vRow2; j++) {
   
    /*
    if(intCellType == this.CTYPE_STATIC_TEXT)
    //this.setCellLock(spreadObject, true, this.getFarPointIndex(i), this.getFarPointIndex(j));
    this.setCellLock(spreadObject, this.getFarPointIndex(i), this.getFarPointIndex(j), true);
    else if(intCellType == this.CTYPE_COMBO)
    this.setCellLock(spreadObject, this.getFarPointIndex(i), this.getFarPointIndex(j), false);
    */
   
    var cell = activeSheet.getCell(j, i);
   
    if(intCellType == this.CTYPE_STATIC_TEXT)
    cell.locked(true);
    else if(intCellType == this.CTYPE_COMBO)
    cell.locked(false);
   
    if(dv != null)
    cell.validator(dv);
   
    cell.formatter(format);
   
    cell.hAlign(vSpreadJSHAlign);
    cell.vAlign(GC.Spread.Sheets.VerticalAlign.center);
   
    if(cellType != null)
    cell.cellType(cellType);
    }
   
    } else {
    //var column = activeSheet.getColumn(i);
    var column = activeSheet.getRange(-1, i, -1, 1);
   
   
   
if(intCellType == this.CTYPE_STATIC_TEXT)
column.locked(true);
else if(intCellType == this.CTYPE_COMBO)
column.locked(false);
       
    if(dv != null)
    column.validator(dv);
   
    column.formatter(format);
       
        // Align 지정
    column.hAlign(vSpreadJSHAlign);
    column.vAlign(GC.Spread.Sheets.VerticalAlign.center);
   
    if(cellType != null)
    column.cellType(cellType);
    }
}
    
if(isReDraw)
reDraw(spreadObject, true);
}

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.