procedure TfrmConvertExcel.excelconvert(tbl:TMySqlQuery);
var
XL,WorkBook: Variant;
i,Col1,Col2,mCnt : integer;
ArrV: OleVariant;
Row,Col, mClbCnt : Integer;
mStr:string;
begin
Screen.Cursor:= crHourGlass;
try
XL:= CreateOleObject('Excel.Application');
except
Application.MessageBox('Excel이 설치되어 있지 않습니다. 먼저 Excel을 설치하세요.',
'오류', MB_OK or MB_ICONERROR);
Screen.Cursor := crDefault;
Exit;
end;
Application.ProcessMessages;
try
WorkBook := XL.WorkBooks.Add;
ArrV := VarArrayCreate([0,tbl.RecordCount+1 , 0, tbl.FieldCount], VarVariant);
I := 0;
tbl.First;
for Row := 1 to tbl.RecordCount do
begin
for Col := 0 to tbl.FieldCount-1 do
begin
Application.ProcessMessages;
ArrV[Row, Col] := ''''+StringReplace(tbl.Fields[Col].AsString, ',', '', [rfReplaceAll]);
end;
Application.ProcessMessages;
Inc(I);
if tbl.Eof then break;
tbl.Next;
end;
XL.Range[XL.Cells[1, 1], XL.Cells[tbl.RecordCount+1, tbl.FieldCount]].value:= ArrV;
XL.DisplayAlerts := False;
XL.Visible:= True;
finally
Application.ProcessMessages;
Screen.Cursor := crDefault;
end;
end;
위와같이 하고 있는데...엑셀로 여러번 변환시키면 프로세스에 마찬가지로 EXCEL.EXE라는 이미지 이름이 여러번 존재하더군요...어떻게 해야 프로세스에 있는 이미지 이름을 제거할 수 있을까요?
루틴 수행후 수작업으로 엑셀을 닫는 행동이 없다면 프로세서가 존재하겠지요..
엑셀처리를 다 마치신후, 눈으로 보지 않는다면
XL.Visible:= True;
문장을 빼시고,
아래 문장을 추가해보세요..
XL.Quit;
XL:= Unassigned;
그럼..즐거운 프로그래밍 하시길~