WinForms윈폼 FlexGrid 에서 병합된 열에 이미지를 표시하고 엑셀 저장 시 문제입니다.
페이지 정보
작성자 박지호 작성일 2021-08-13 11:09 조회 3,794회 댓글 0건본문
관련링크
FlexGrid에서 지원하는 SaveExcel 메소드를 이용해 화면에 그려진 FlexGrid의 결과를 그대로 Excel에 표시하고 싶습니다.
폼에서는 정상적으로 셀이 병합되어서 이미지가 표시되는데, 이를 엑셀로 저장을 하면
텍스트는 정상적으로 병합되어 보이지만 이미지는 각 셀마다 사진이 표시되며 ImageAlign 설정만 적용됩니다.
폼 화면 결과처럼 병합된 셀에 이미지를 보이는 그대로 엑셀에 표시해야 하는데 어떻게 해야하나요?
CellRange.Image에도 넣어보고, SetCellImage(row, col, ImageFile)으로도 넣어봤습니다만,
이미지는 병합된 채 반영되지 않습니다.
--------------- 답변 후 추가 사진 첨부 -------------------
아래에 소스 첨부드립니다.
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!");
}
댓글목록
등록된 댓글이 없습니다.