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
[27401] [질문] 엑셀이 메모리에서 사라지지 않습니다.
한대필 [angelkiller] 951 읽음    2003-10-06 09:45

안녕하십니까?
다음과 같이 코딩하였습니다. 그런데...
엑셀이 메모리에서 사라지지 않아 낭패 입니다.

아마도 엑셀이 생성된 파일을 잡고 있는듯하여...
엑셀이 메모리에 남아 있을때 생성된 엑셀파일을 열려고 시도하면
엑셀도 먹통이 되어 버립니다.

아...  검색이 되지 않으니.. 정말로 답답하군요..
소스좀 봐 주시겠습니까?

C++빌더 4.0 이고요, 윈도우2000 입니다.
====================================================================

#include "comobj.hpp"
#include <utilcls.h>
위의 두 라인을 추가하고...


    Variant Excel;
    AnsiString FilePath ;

    SaveDialog->Filter = "Excel files(*.xls)|*.XLS";
    if ( SaveDialog->Execute() )
        FilePath = SaveDialog->FileName ;
    else
        return;

    try
    {
        Excel = CreateOleObject("Excel.Application");
    }
    catch(...)
    {
        ShowMessage("EXCEL이 설치되어 있지 않습니다. EXCEL을 먼저 설치해야 합니다.");
        return;
    }

    try
    {

        Variant WorkBooks  = Excel.OlePropertyGet("WorkBooks");
        WorkBooks.OleFunction("Add");
        Variant ActiveWorkBook = Excel.OlePropertyGet("ActiveWorkbook");
        Variant WorkSheets = Excel.OlePropertyGet("Worksheets");
        Variant WorkSheet = WorkSheets.OlePropertyGet("Item", 1);
        WorkSheet.OleFunction("Activate");

        //제목넣기
        for (int iCol=0; iCol < MainQuery->Fields->Count  ; iCol++)
        {
            Variant Range = WorkSheet.OlePropertyGet("Cells", 1, iCol+1); // Row=.Zeile / Col=Spalte
            Range.OlePropertySet("Value", MainQuery->Fields->Fields[iCol]->DisplayLabel );
            Application->ProcessMessages();
        }

        //자료넣기
        MainQuery->First();
        for (int iRow=1; ! MainQuery->Eof  ; iRow++)
        {
            for (int iCol = 0; iCol < MainQuery->Fields->Count ; iCol++)
            {
                Variant Range = WorkSheet.OlePropertyGet("Cells", iRow+1, iCol+1); // Row=.Zeile / Col=Spalte
                Range.OlePropertySet("Value", MainQuery->Fields->Fields[iCol]->AsString );
                Application->ProcessMessages();
            }
            MainQuery->Next();
        }

        ActiveWorkBook.OleFunction("SaveAs", FilePath ); //Datei speichern

    }
    catch(...)
    {
        ShowMessage("이상이 발생했습니다.");
    }

    Excel.OleFunction("Quit");
    Excel = Unassigned;

    ShowMessage("엑셀저장이 완료 되었습니다.");

+ -

관련 글 리스트
27401 [질문] 엑셀이 메모리에서 사라지지 않습니다. 한대필 951 2003/10/06
27406     Re:[질문][해결!] 엑셀이 메모리에서 사라지지 않습니다. 한대필 863 2003/10/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.