C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[76106] 엑셀의 복사 및 카피 관련해서 문의 드려요
빌더초보겸 [] 1274 읽음    2021-04-16 17:43
하나의 샘플 파일의 Sheet를
다른 파일로 Sheet 자체를 복사하고 싶었지만
이상하게 무엇이 문제인지 제대로 안되더군여
흔히 사용하는 Activesheet나 Activebook을 사용하면 두개의 파일이 왔다갔다
하는 사이에 문제가 생기는것인가 싶긴 한데 일단 문의 사항은

2개의 Sheet를 가르키고 있는 SSheet와 DSheet
두개를
Cells 선택후 select 하고 app의 Selection을 이용해서 Copy & Paste를 하였습니다.

        Variant SSheet = pXlapp_t->m_pdispWorkbook.OlePropertyGet("WorkSheets", WideString(sheetName) );
        SSheet.OleFunction("Select");
        SSheet.OlePropertyGet("Cells").OleProcedure("Select");
        pXlapp_t->m_pdispExcelApp.OlePropertyGet("Selection").OleProcedure("Copy");
        Variant DSheet = pXlapp->m_pdispWorkbook.OlePropertyGet("WorkSheets", WideString(sheetName));
        DSheet.OlePropertyGet("Cells").OleProcedure("Select");
        DSheet.OleProcedure("Paste");

이렇게 하니 복사가 이루어지긴 합니다
안의 글자와 테두리값 들이
다만 셀의 너비 및 높이 부분이 초기에 있는 새로생성한 크기로 적용 되어
        for( int j =0; j< heigthCnt; j++ )
        {
            long data = SSheet.OlePropertyGet("Rows", j+1).OlePropertyGet("RowHeight");
            DSheet.OlePropertyGet("Rows",j+1).OlePropertySet("RowHeight", data );
        }
        for( int j =0; j< widthCnt; j++ )
        {
            long data = SSheet.OlePropertyGet("Columns", j+1).OlePropertyGet("ColumnWidth");
            DSheet.OlePropertyGet("Columns",j+1).OlePropertySet("ColumnWidth", data );
        }

이 해당 코드를 통해 복사하는 파일의 셀 크기를 대상이 되는 파일의 셀크기에 적용 하였는데
문제는 좀 느린거 같습니다.
위에 양식이 되는 sample 파일이 있어서 그걸 열고 거기에 데이터 쓴후 해당 내용을
대상이 되는 파일에 시트를 추가하여 그곳에 붙여넣고 하는 작업을
지금 고작 11개 쯤 하는데 시간이 오래 걸립니다.
위의 셀크기 조절하는 부분에 대한 좀더 간단하고 빠른 방법과
Sample파일을 여는작업을 열고 내리고 저장안하고 다시 열고 하는 방식으로
데이터를 써줄 양식이 되는 엑셀을 열고닫고 하는데 이게 오래 걸려서 그런건가요?
한번만 열고 쓴 데이터 복사후에는 해당 양식에 컬럼을 일일이 찾아서 데이터를 지워주어야 하나요?

+ -

관련 글 리스트
76106 엑셀의 복사 및 카피 관련해서 문의 드려요 빌더초보겸 1274 2021/04/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.