시간관계상.. 어쩔 수 없이 꽁수를 사용했습니다...
제 능력으로는 스스로 해결도, 그리고 소스도 못 찾겠네요.
그래서 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. 아울러 위의 컴퍼넌트를 사용한 에제에서 프로세서를 억지로 죽이지않고, 알아서 돌아가시도록 하고 싶은데, 고수님들의 답변을... ^^;;