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

Cells[row, col, row2, col2].BackColor = 컬러 > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 Cells[row, col, row2, col2].BackColor = 컬러

페이지 정보

작성자 junbottae 작성일 2023-10-25 14:36 조회 128회 댓글 0건
제품 버전 : 16.1
컨트롤 이름 : FarPoint.Win.Spread.FPSpread

본문


objSpread.ActiveSheet.Cells[objSpread.ActiveSheet.RowCount - 1, 0, objSpread.ActiveSheet.RowCount - 1, objSpread.ActiveSheet.Columns.Count - 1].BackColor = Color.LightGreen;


위와 같이 데이터를 한줄씩 추가하면서 Cells[] 속성을 이용하여 BackColor를 변경 하였습니다.

질문1)그리드상에서는 문제가 없어 보이지만, 엑셀로 저장 후 파일을 열어보면

15행 이후의 색상이 모두 변경 되어 있습니다.

그리고, 컬럼도 S까지가 끝인데 T열 이후로 BackColor가 지정 되어 있습니다.

BackColor는 소스의 반복문에서 변경을 하고 있습니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

2 답변

WinForms윈폼 Re: Cells[row, col, row2, col2].BackColor = 컬러

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

페이지 정보

작성자 GCK써니 작성일 2023-10-26 10:26 댓글 1건

본문

junbottae 님, 안녕하세요.

그레이프시티입니다.


말씀하신 현상은 Spread에서 성능 향상을 위해 내부 스타일 로직을 최적화 하는 과정에서 발생하는 현상입니다.


해당 현상을 방지하기 위해, 마지막 행과 열에 보이지 않는 행과 열을 추가하고, 행 추가 코드 및 BackColor 설정 코드를 수정하여 사용하실 수 있습니다.


아래 샘플 코드를 참고하여 주시기 바랍니다.

// 보이지 않는 행 추가
objSpread.ActiveSheet.RowCount = 1;
objSpread.ActiveSheet.Rows[objSpread.ActiveSheet.RowCount - 1].Visible = false;

// 보이지 않는 열 추가 (T열을 보이지 않는 열로 설정)
objSpread.ActiveSheet.ColumnCount = 20;
objSpread.ActiveSheet.Columns[objSpread.ActiveSheet.ColumnCount - 1].Visible = false;

/* 반복문 내에서 행(데이터) 추가 및 배경색 설정 */
// 행 추가 시, 마지막 행이 아닌 그 전 행에 추가함.
objSpread.ActiveSheet.AddRows(objSpread.ActiveSheet.RowCount-1, 1);
// BackColor 설정 코드 수정
// objSpread.ActiveSheet.Cells[objSpread.ActiveSheet.RowCount - 1, 0, objSpread.ActiveSheet.RowCount - 1, objSpread.ActiveSheet.Columns.Count - 1].BackColor = Color.LightGreen;
objSpread.ActiveSheet.Cells[objSpread.ActiveSheet.RowCount - 2, 0, objSpread.ActiveSheet.RowCount - 2, objSpread.ActiveSheet.Columns.Count - 2].BackColor = Color.LightGreen;

/* xlsx 파일로 저장하기 */
// 마지막 행과 열을 숨김 해제한 후 xlsx로 저장
// xlsx로 저장 후, 다시 마지막 행과 열 숨김
objSpread.ActiveSheet.Rows[objSpread.ActiveSheet.RowCount - 1].Visible = true;
objSpread.ActiveSheet.Columns[objSpread.ActiveSheet.ColumnCount - 1].Visible = true;
objSpread.SaveExcel("BackColorTest.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
objSpread.ActiveSheet.Rows[objSpread.ActiveSheet.RowCount - 1].Visible = false;
objSpread.ActiveSheet.Columns[objSpread.ActiveSheet.ColumnCount - 1].Visible = false;


감사합니다.

그레이프시티 드림

댓글목록

junbottae님의 댓글

junbottae 작성일

컬럼[index].visible = false 로 지정을 해도 해당 컬럼이 보여지는 이유는 무엇인가요?
예전 버전에서는 Visible = False로 지정 시 실행 화면에서 해당 컬럼이 보이지 않았습니다.
답변 주신 내용은, 빈열과 행을 추가하고, 컬러를 Rowcount - 2로 하라는 얘기지요?
별로 좋은 방법은 아닌듯 합니다.

WinForms윈폼 Re: Cells[row, col, row2, col2].BackColor = 컬러

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

페이지 정보

작성자 GCK써니 작성일 2023-10-27 10:16 댓글 0건

본문

junbottae 님, 안녕하세요.

그레이프시티입니다.


[ 1 ]

아래와 같이 컬럼[index].Visible = false;로 설정했을 때, 실행화면에서 해당 인덱스의 컬럼이 숨겨지는 것으로 확인됩니다.

fpSpread1.ActiveSheet.Columns[0].Visible = false;


코드 숨김처리 이후 숨김 해제하는 부분이 있는 것은 아닌지 확인 부탁드리며, 지속적으로 이슈가 발생할 시 해당 현상을 확인해볼 수 있는 실행가능한 샘플 프로젝트를 전달해주시면 확인 후 안내드리겠습니다.


[ 2 ] 

네, 빈 행과 열을 추가하고, 컬러를 RowCount - 2, ColumnCount -2까지인 영역에 설정해야한다는 이야기입니다.


말씀하신 현상은 일반적인 상황에서 Spread의 성능을 향상 시키기 위해 도입된 새로운 스타일 모델의 의도된 동작이기 때문에, 앞서 안내 드린 워커라운드 외에 다른 적용 가능한 방법이 없습니다.


만일 해당 방법의 적용이 어려우실 경우, 이전 스타일 모델인 Legacy Style를 적용해보실 수 있습니다. Legacy Style 모드는 코드 혹은 Spread Designer를 이용하여 설정하실 수 있습니다.


  1. 코드로 적용하기
    fpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.Style;
    fpSpread1.Reset();

  2. Spread Designer 사용하기
    Spread Designer 우측 속성 패널 -> Spread -> LegacyBehaviors -> Stlye 체크
    9f270642b3f12c7e9bce7ee0216fd7b6_1698369352_6809.png
     
감사합니다. 
그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

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