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

엑셀 파일 내 이미지 파일 접근 및 제어 방법 질문 > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 엑셀 파일 내 이미지 파일 접근 및 제어 방법 질문

페이지 정보

작성자 Vespertine 작성일 2023-08-17 09:49 조회 348회 댓글 1건
제품 버전 : 15.0.20225.0
컨트롤 이름 : farPoint.Win.Spread.FpSpread

본문

첨부파일

첨부한 엑셀파일 안에 있는 이미지들의 위치를 옮기고 싶은데 방법을 모르겠습니다

방법 좀 알려주세요



Dim mSheet As GrapeCity.Spreadsheet.IWorksheet = FpSpread1.AsWorkbook().ActiveSheet

Dim pic As GrapeCity.Spreadsheet.Drawing.IShapes = mSheet.Shapes


이런식으로 Pictures 객체나 Shapes 객체 안의 아이템이 있다면 가져와서 해볼 수 있지 않을까 생각했는데


위의 코드로 Shapes를 받아오면 Count가 0 이고

mSheet.Pictures로 받아와도 Pictures의 Count가 0이 나옵니다





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

댓글목록

GCK써니님의 댓글

GCK써니 작성일

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

문의하신 기능에 대하여 확인 중입니다.
관련 내용이 업데이트 되는 대로 안내드리겠습니다.
회신이 지연되어 죄송합니다.

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

2 답변

WinForms윈폼 Re: 엑셀 파일 내 이미지 파일 접근 및 제어 방법 질문

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

페이지 정보

작성자 GCK써니 작성일 2023-08-21 11:56 댓글 3건

본문

Vespertine 님, 안녕하세요.

그레이프시티입니다.


EnhancedShapeEngine을 사용할 경우 IShape 객체에 접근하여 이미지를 제어할 수 있습니다. 아래 코드를 참고하여 주시기 바랍니다.

//Flat style을 사용중인지 확인 바랍니다. Enhanced shape engine은 Flat style 모드에서만 사용 가능합니다.
fpSpread1.LegacyBehaviors = LegacyBehaviors.None; 
fpSpread1.Reset();

//Enhanced shape engine을 사용합니다.
fpSpread1.Features.EnhancedShapeEngine = true;  

// Excel 파일을 불러옵니다.      
fpSpread1.OpenExcel("C:\\downloads\\Images.xlsx");

// IShapes 인터페이스를 사용하여 이미지에 접근할 수 있습니다.      
MessageBox.Show(fpSpread1.AsWorkbook().ActiveSheet.Shapes.Count.ToString());


만약 Legacy shape engine을 사용하고 있을 경우, 아래 코드를 사용하여 도형의 갯수를 가져올 수 있습니다.

fpSpread1.ActiveSheet.DrawingContainer.Count;


추가로 궁금한 점이 있을 경우, 문의주시기 바랍니다.

감사합니다.

그레이프시티 드림

댓글목록

Vespertine님의 댓글

Vespertine 작성일

안녕하세요 우선 답변 감사드립니다

하지만 제가 찾고자 했던 기능은 아니에요
제 설명이 조금 부족했던 것 같습니다

제가 찾고 있는 기능은 엑셀 파일 안에 이미지가 여러 개 있을 때 특정 이미지를 찾아 원하는 위치로 이동하는 기능입니다

그러기 위해서는 일단 이미지들의 리스트를 불러오는 방법을 알아야 할 것 같은데요
보내주신 
fpSpread1.ActiveSheet.DrawingContainer.Count;
코드로는 이미지의 개수까지는 알 수 있어서 제가 원하는 기능은 아닙니다


저에게 필요한 기능은 이름을 모르는 특정 이미지의 객체에 접근해서 Location을 바꾸는 방법입니다

결론적으로 fpSheet.DrawingContainer.GetShape(string)
이라는 메서드를 이용해서 이미지 객체에는 접근이 가능하지만
이 기능을 사용하려면 이미지 파일의 이름을 알고 있어야 해서 사용할 수 가 없는 상황입니다


GCK써니님의 댓글의 댓글

GCK써니 작성일

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

상세한 내용을 공유해주심에 감사드립니다.

말씀하신 것과 같이, 특정 이미지 객체에 접근하기 위해서는 접근할 객체의 이름(DrawingContainer 활용시) 또는 인덱스(IShapes 활용시)가 필요합니다.

위치 변경을 원하시는 "특정" 이미지는 어떠한 이미지인가요? 대상 이미지의 특징을 공유해주신다면 가능한 방법이 있는지 한번 더 확인해보겠습니다.

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

Vespertine님의 댓글

Vespertine 작성일

답변 감사드립니다

제가 컨트롤 하려는 이미지는
게시글에 첨부한 1234.xlsx 파일안에 있는 3개의 이미지입니다


이 이미지들을 클릭하면 이미지의 Name을 알 수 있어
GetShape(string) 함수를 사용하면 이미지 객체에 쉽게 접근이 가능하겠지만
사용자가 이 이미지들을 변경할 일도 생겨서 Name이 바뀔 일도 생기는 상황입니다


그래서 이미지들의 Name을 알지 못하는 상황에서도
이 이미지 객체에 접근해서 Name 속성을 읽어 온다던지
Location 정보를 가져와서 특정 상황에 맞게 이동시켜주는 기능이 필요합니다


결론적으로 해당 Sheet 내에 있는 이미지 객체들에 대해
Name을 알지 않더라도 접근할 수 있는 방법이 필요합니다

WinForms윈폼 Re: 엑셀 파일 내 이미지 파일 접근 및 제어 방법 질문

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

페이지 정보

작성자 GCK써니 작성일 2023-08-24 10:02 댓글 1건

본문

Vespertine 님, 안녕하세요.

그레이프시티입니다.


이미지 객체의 이름을 모를 때, 이미지 객체에 접근할 수 있는 다른 두가지 방법을 안내드립니다.


1) 이미지의 기존 위치를 알고 있는 경우, 이미지의 기존 위치 정보(좌표)를 이용하여 이미지 객체에 접근할 수 있습니다.


2) Sheet에 포함된 이미지의 인덱스를 사용하여 이미지 객체에 접근할 수 있습니다. 


샘플 코드를 전달 드립니다. 원하시는 동작을 구현하시는 데 도움이 되는 기능이길 바랍니다.

// 방법 1) 기존 이미지의 위치(Point)를 알고 있는 경우
FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainer container = fpSpread1.ActiveSheet.DrawingContainer;
FarPoint.Win.Spread.DrawingSpace.PSObject obj = container.ChildContains(new Point(0, 0), false);
if (obj != null)
{
    Console.WriteLine(obj.Name);
    obj.Location = new Point(100, 100);
}

// 방법 2) Sheet 내에 존재하는 이미지의 Index를 활용하는 경우
FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainer container2 = fpSpread1.ActiveSheet.DrawingContainer;
FarPoint.Win.Spread.DrawingSpace.PSObject obj2 = (FarPoint.Win.Spread.DrawingSpace.PSObject)container2.ContainedObjects[1];
Console.WriteLine(obj2.Name);
obj2.Location = new Point(100, 100);


제품 사용 중 추가로 궁금한 점이 있으실 경우, 문의주시기 바랍니다.

감사합니다.

그레이프시티 드림

댓글목록

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