|
아래 코드는 제가 사용한 액셀저장하는 코딩입니다.
Win XP 에서는
XLWorkbooks.OleProcedure("Close");
XLApp.OleProcedure("Quit");
이모듈에서 저장할까요 메세지창이 실행되서 저장작업을 진행 할수가 있었는데
Win7에서는 메세지창이 내부에 숨어버려서 ALT+Tab키를 눌러서 창을 찾아서 저장가능합니다.
제가 사용하는 방식이 문제가 있어서 그런건지 Win7에서는 별도의 코딩을 더 해야 할지 고수분들의
조언 부탁드립니다.
Variant XLApp;
Variant XLWorkbooks;
Variant XLWorkbook;
Variant XLWorksheet;
try
{
XLApp = CreateOleObject("Excel.Application");
}
catch(...)
{
ShowMessage("Excel OLE server not found");
return;
}
XLWorkbooks = XLApp.OlePropertyGet("Workbooks");
XLWorkbooks.OleProcedure("Add");
XLWorkbook = XLWorkbooks.OlePropertyGet("Item", 1);
XLWorksheet = XLWorkbook.OlePropertyGet("Worksheets");
Variant xlSheet = XLWorksheet.OlePropertyGet("Item", 1);
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", 1,1, "업무일지명세");
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", 2,1, "담당자");
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", 2,2, "날 짜");
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", 2,3, "번호");
int i=3 ;
Query1->First();
while(!Query1->Eof)
{
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", i,1,
Query1->FieldByName("insaname")->AsString);
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", i,2,
Query1->FieldByName("wrkdate")->AsString);
xlSheet.OlePropertyGet("Cells").OlePropertySet("_Default", i,3,
Query1->FieldByName("wrknum")->AsString);
i++;
Query1->Next();
}
ShowMessage("Excel변환 작업이 완료 되었습니다.");
XLWorkbooks.OleProcedure("Close");
XLApp.OleProcedure("Quit");
|