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
[24112] 자답 : Excel Component 사용에 따른 자답 및 질문입니다.
smleelms [smleelms] 3079 읽음    2003-02-06 17:45
시간관계상.. 어쩔 수 없이 꽁수를 사용했습니다...
제 능력으로는 스스로 해결도, 그리고 소스도 못 찾겠네요.
그래서 OLE를 사용하지 않고 (솔직히 OLE가 뭔지도 잘 모릅니다.. ㅡ.ㅜ), Office2K의 ExcelApplication Component를 사용해서 피해갔습니다.. ^^;;
그것도 마지막에 꽁수를 사용해서요.. ㅡ.ㅡ;

혹시나 다른분 참고하시라고, 엑셀(Excel) 컴퍼넌트를 사용한 예제를 올립니다.
보시고 허접하다고 웃지마세요.. 그리고 미완성입니다..
그 부분은 아래에서 설명을 드리겠습니다.

#include <utilcls.h>
// ExcelApplication, ExcelWorkbook, ExcelWorksheet 컴퍼넌트 추가

void __fastcall TFormSave::btnSaveClick(TObject *Sender)
{

    ExcelApplication->Connect();
    ExcelApplication->set_Visible(0,false);
    ExcelApplication->set_DisplayAlerts(TDefLCID(), false);

    TVariant fileName = "c:\\form.xls";

    ExcelWorkbook->ConnectTo( ExcelApplication->Workbooks->Open(fileName.operator wchar_t *()) );
    ExcelWorksheet->ConnectTo( ExcelWorkbook->ActiveSheet );

    ExcelWorksheet->Cells->set_Item((TVariant)40,(TVariant)"K",(TVariant)"10");

    ExcelWorkbook->Save(TDefLCID());

    ExcelApplication->Workbooks->Close(TDefLCID());
    ExcelWorkbook->Close(TNoParam(), TNoParam(), TNoParam(), TDefLCID());
    ExcelApplication->Quit();

    ExcelWorksheet->Disconnect();
    ExcelWorkbook->Disconnect();
    ExcelApplication->Disconnect();

    KillExcel();
}

이상입니다.. 존재하는 엑셀파일에 데이터를 추가하는 것이구요, 새파일은 ExcelWorkbook에서 Add Method를 써시면 될겁니다..
그리고 미완성이라고 말씀드린 부분은 엑셀이 종료가 되어도, 프로세서가 계속 메모리에 상주한다는 겁니다.. 그래서 프로그램을 종료하지 않고 다시 엑셀을 호출하면 동작은 되는데, 메인프로그램이 종료시에 엑셀에서 오류가 발생합니다. 시간관계상 더이상 끌수가 없어서 억지로 죽였습니다..

프로세서를 찾아서 죽이는 부분은 다음의 관련 리플들을 참고하시면 됩니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=22474

그리고 엑셀관련 더 궁금하신 분들은 다음 뉴스그룹을 참고하세요. 그래두 참고할 만한 자료가 꽤 되더군요.
http://groups.google.com/groups?hl=ko&lr=&ie=UTF-8&oe=UTF-8&group=borland.public.cppbuilder

그럼, 허접한 저는 이만.. (__)


P.S 1. 그래두 OLE 관련 에러의 내용을 아시는 분은 리플 부탁드립니다.
2. 아울러 위의 컴퍼넌트를 사용한 에제에서 프로세서를 억지로 죽이지않고, 알아서 돌아가시도록 하고 싶은데, 고수님들의 답변을... ^^;;

+ -

관련 글 리스트
24086 OLE (Excel) 관련 에러인듯 합니다.. NotifyNonDelphiException 에러. smleelms 1910 2003/02/05
24112     자답 : Excel Component 사용에 따른 자답 및 질문입니다. smleelms 3079 2003/02/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.