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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1075] [OLE] 클립보드(Clipboard)를 이용해 엑셀(Excel)파일 내용 가져오기
장성호 [nasilso] 15669 읽음    2012-02-21 20:37
음..

개요

엑셀파일 내용 가져오는 방법에 대한 질문이 종종 올라오곤 해서
한번 만들어 보았습니다.

특정Cell의 내용을 하나씩 읽어오는 방법이 아니라
Sheet전체를 선택해 Clipboard로 copy해서 읽어오는 방법입니다.

다음 링크를 참조했구요
약간 보완 수정되었습니다.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=56593


코드
#include "ClipBrd.hpp"
void __fastcall TForm6::Button3Click(TObject *Sender)
{
	if(OpenDialog1->Execute(Handle))
	{

		Variant xlApp, xlBooks, xlBook, xlSheets, xlSheet, vrange;

		 xlApp = Variant::CreateObject("Excel.Application");
		 try
		 {
			 xlApp.OlePropertySet("Visible",false);//Desktop에 보여줄지 여부 결정
			 xlBooks = xlApp.OlePropertyGet("Workbooks");
			 AnsiString sFName=OpenDialog1->FileName;
			 xlBooks.OleProcedure("Open", sFName.c_str());

			 xlBook = xlBooks.OlePropertyGet("Item", 1); //여러개의 문서중 첫번째 문서 선택
			 xlSheets = xlBook.OlePropertyGet("Worksheets");
			 xlSheet = xlSheets.OlePropertyGet("Item", 1);  //Workbook의 첫번째시트 선택
			 xlSheet.OleProcedure("Select"); //선택한 Sheet를 Active시킴 (다른 Sheet가 active되었을때 Select가 오동작)
	//		 vrange=xlSheet.OlePropertyGet("Range","A3:C65535"); // 범위지정 1
			 vrange=xlSheet.OlePropertyGet("Cells"); // 범위지정 2
			 vrange.OleProcedure("Select"); // 선택 (범위지정한 부분이 선택됨)
			 xlApp.OlePropertyGet("Selection").OleProcedure("Copy"); // 복사 (클립보드로 복사됨)

			 Memo1->Lines->Text=Clipboard()->AsText; //Clipboard의 내용을  TMemo로 읽어옴

			 xlApp.OlePropertySet("DisplayAlerts",false);  // 경고창 없애기
			 xlBooks.OleProcedure("Close");
		 }
		 __finally
		 {
			xlApp.OleProcedure("Quit");
		 }
	}

}
//---------------------------------------------------------------------------




장점은?
이 방법의 장점은
Cell 하나씩 읽어오는것보다 조금 빠르지 않을까 하는 생각이 듭니다.

단점은?
단점도 많이 있을듯...

그럼..

+ -

관련 글 리스트
1075 [OLE] 클립보드(Clipboard)를 이용해 엑셀(Excel)파일 내용 가져오기 장성호 15669 2012/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.