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

FlexGrid 에서 병합된 열에 이미지를 표시하고 엑셀 저장 시 문제입니다. > Q&A | 토론

본문 바로가기

ComponentOne

Q&A | 토론

WinForms윈폼 FlexGrid 에서 병합된 열에 이미지를 표시하고 엑셀 저장 시 문제입니다.

페이지 정보

작성자 박지호 작성일 2021-08-13 11:09 조회 3,794회 댓글 0건
제품 버전 : 4.0.20191.359
컨트롤 이름 : C1FlexGrid

본문

FlexGrid에서 지원하는 SaveExcel 메소드를 이용해 화면에 그려진 FlexGrid의 결과를 그대로 Excel에 표시하고 싶습니다.


폼에서는 정상적으로 셀이 병합되어서 이미지가 표시되는데, 이를 엑셀로 저장을 하면

텍스트는 정상적으로 병합되어 보이지만 이미지는 각 셀마다 사진이 표시되며 ImageAlign 설정만 적용됩니다.


폼 화면 결과처럼 병합된 셀에 이미지를 보이는 그대로 엑셀에 표시해야 하는데 어떻게 해야하나요?


CellRange.Image에도 넣어보고, SetCellImage(row, col, ImageFile)으로도 넣어봤습니다만,

이미지는 병합된 채 반영되지 않습니다.


2a1dc8fad1aec1cff37f305031ae4e69_1628820596_1804.png


2a1dc8fad1aec1cff37f305031ae4e69_1628820601_318.png


--------------- 답변 후 추가 사진 첨부 -------------------




아래에 소스 첨부드립니다.


private void Form1_Load(object sender, EventArgs e)

        {

            // 1. 스타일 정의

            c1FlexGrid1.AllowMerging = AllowMergingEnum.RestrictAll; 

            //c1FlexGrid1.AllowMerging = AllowMergingEnum.Custom;  


            // 열 정의

            c1FlexGrid1.Cols.Count = 3;


            c1FlexGrid1.Cols[0].AllowMerging = true; 

            c1FlexGrid1.Cols[1].AllowMerging = true;

            c1FlexGrid1.Cols[2].AllowMerging = true;


            // 행 정의

            c1FlexGrid1.Rows.Fixed = 2;

            c1FlexGrid1.Rows[0].AllowMerging = true; 

            c1FlexGrid1.Rows[1].AllowMerging = true;    

            c1FlexGrid1.Rows[0].TextAlign = TextAlignEnum.CenterCenter;

            c1FlexGrid1.Rows[1].TextAlign = TextAlignEnum.CenterCenter;


            // 열 고정 캡션 입력

            c1FlexGrid1[0, 0] = "Excel Image Export Test";

            c1FlexGrid1[0, 1] = "Excel Image Export Test";

            c1FlexGrid1[0, 2] = "이미지";

            c1FlexGrid1[1, 0] = "상품명";

            c1FlexGrid1[1, 1] = "컬러";

            c1FlexGrid1[1, 2] = "이미지";


            // 행 내용 입력

            // 0 col

            c1FlexGrid1[2, 0] = "콘택트렌즈1";

            c1FlexGrid1[3, 0] = "콘택트렌즈1";

            c1FlexGrid1[4, 0] = "콘택트렌즈1";

            c1FlexGrid1[5, 0] = "콘택트렌즈2";

            c1FlexGrid1[6, 0] = "콘택트렌즈2";


            // 1 col

            c1FlexGrid1[2, 1] = "초코브라운";

            c1FlexGrid1[3, 1] = "초코브라운";

            c1FlexGrid1[4, 1] = "초코브라운";

            c1FlexGrid1[5, 1] = "로즈골드";

            c1FlexGrid1[6, 1] = "로즈골드";


            // Custom시

            //CellRange cr3 = c1FlexGrid1.GetCellRange(0, 2, 1, 2);

            //c1FlexGrid1.MergedRanges.Add(cr3);


            //CellRange cr4 = c1FlexGrid1.GetCellRange(0, 0, 0, 1);

            //c1FlexGrid1.MergedRanges.Add(cr4);


            //CellRange cr5 = c1FlexGrid1.GetCellRange(2, 0, 4, 0);

            //c1FlexGrid1.MergedRanges.Add(cr5);


            //CellRange cr6 = c1FlexGrid1.GetCellRange(5, 0, 6, 0);

            //c1FlexGrid1.MergedRanges.Add(cr6);


            //CellRange cr7 = c1FlexGrid1.GetCellRange(2, 1, 4, 1);

            //c1FlexGrid1.MergedRanges.Add(cr7);


            //CellRange cr8 = c1FlexGrid1.GetCellRange(5, 1, 6, 1);

            //c1FlexGrid1.MergedRanges.Add(cr8);


            CellRange cr1 = c1FlexGrid1.GetCellRange(2, 2, 4, 2);

            cr1.Image = Image.FromFile("..\\..\\pic.jpg");

            c1FlexGrid1.Cols[2].ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale;

            c1FlexGrid1.MergedRanges.Add(cr1);


            CellRange cr = c1FlexGrid1.GetCellRange(5, 2, 6, 2);

            cr.Image = Image.FromFile("..\\..\\pic2.jpg");

            c1FlexGrid1.Cols[2].ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale;

            c1FlexGrid1.MergedRanges.Add(cr);

        }


        private void button1_Click(object sender, EventArgs e)

        {

            c1FlexGrid1.SaveExcel("..//..//ExcelFile.xlsx", FileFlags.AsDisplayed | FileFlags.IncludeMergedRanges);

            MessageBox.Show("Saved!");

        }


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

댓글목록

등록된 댓글이 없습니다.

2 답변

WinForms윈폼 Re: FlexGrid 에서 병합된 열에 이미지를 표시하고 엑셀 저장 시 문제입니다.

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

페이지 정보

작성자 GCK폴 작성일 2021-08-17 15:55 댓글 2건

본문

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

저장하실때 Merged된 셀을 포함하는 플래그값을 추가하셔서 사용해 보시기 바랍니다.
예를 들면 아래와 같습니다.
c1FlexGrid1.SaveExcel("FileName.xlsx", FileFlags.AsDisplayed | FileFlags.IncludeMergedRanges);
 
감사합니다. 
그레이프시티 드림

댓글목록

박지호님의 댓글

박지호 작성일

위의 옵션은 이미 추가하여 시도를 했었습니다. 지금도 마찬가지로 해보았는데 아래 사진처럼 각 셀마다 사진이 분리됩니다. 
병합 모드를 Custom으로 해서 직접 MergedRanges에 Add를 해도 폼 화면 상에서만 병합될 뿐 엑셀에서는 텍스트만 와 셀이 병합되기는 하나 사진은 여전히 병합되기 전 셀마다 표시됩니다.

 AsDisplayed가 사진을 실제 폼 화면에서 동작하는 대로 엑셀을 그려내지 못하는것 같습니다.

본문 질문에 추가 사진과 소스를 수정해서 올려두었습니다. 다시 확인 부탁드립니다...

GCK폴님의 댓글의 댓글

GCK폴 작성일

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

네 내용 잘 확인하였습니다.
말씀하신것처럼 동일하게 문제가 발생하는것 같습니다.

현재 본사 개발팀을 통해 문제를 확인중에 있습니다.
확인이 끝나면 바로 답변 올려 드릴테니 조금만 기다려 주시기 바랍니다.

감사합니다.
그레이프시티 드림

WinForms윈폼 Re: FlexGrid 에서 병합된 열에 이미지를 표시하고 엑셀 저장 시 문제입니다.

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

페이지 정보

작성자 GCK폴 작성일 2021-09-15 16:23 댓글 0건

본문

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

많이 기다리게 해드려 죄송합니다.
문의 주셨던 해당 이슈의 버그 픽스가 완료 되었습니다.
아래의 링크를 통해 다운 받으셔서 DLL을 업데이트 해주시면 됩니다.

감사합니다. 
그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

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