我有一过程里面用DELPHI的OLE建立了对EXCEL表的读取,但是我虽然释放了对EXCEL表的操作,实际上在内存中仍然占用了EXCEL,因为我在过程中打开了好多了EXCEL表,所以一共用了100M RAM,但是此过程执行完毕后RAM就全部被释放了,不知道是啥原因?
过程如下:

DateTimeToString(sdate,'yyyymmdd',datepicker1.date);
path:=ExtractFilePath(paramstr(0));
filename:=path+'bb.ini'  ;
MyIni := TIniFile.Create(filename) ;
sourcefile:=path+'报表模版.xls';
filename:=path+'output\报表'+sdate+'.xls';
if not FileExists(filename) then
       CopyFile(pchar(sourcefile),pchar(filename),false);ExcelApp := CreateOleObject( 'Excel.Application' );
Excelmerge:= CreateOleObject( 'Excel.Application' );
Excelsource:= CreateOleObject( 'Excel.Application' );
excellastday:=CreateOleObject( 'Excel.Application' );
ExcelApp.workbooks.open(filename);
Excelmerge.workbooks.open(path+'配置归并.xls');
excellastday.workbooks.open(OpenDialog2.Filename);
Excelapp.WorkSheets[1].Activate;
Excelmerge.WorkSheets[1].Activate;
Excellastday.WorkSheets[1].Activate;。。with OpenDialog1.Files do
  begin
   for I := 0 to Count - 1 do
      BEGIN
         Excelsource := CreateOleObject( 'Excel.Application' );
         Excelsource.workbooks.open(opendialog1.files.Strings[I]);
         Excelsource.WorkSheets[1].Activate;
         sheet:=excelsource.workbooks[1].worksheets[1];
。。
      excelsource.DisplayAlerts := False;
      excelsource.Quit;
      Excelsource:=Unassigned;
      VarClear(excelsource);
      end;
//这里释放了变量,但是在内存中还是有EXCEL,一定要等下面部分全部执行完后才真正的释放,不知道为啥???????????
  end;with OpenDialog7.Files do
  begin
   for I := 0 to Count - 1 do
      BEGIN
         Excelsource := CreateOleObject( 'Excel.Application' );
         Excelsource.workbooks.open(opendialog7.files.Strings[I]);
         Excelsource.WorkSheets[1].Activate;
         sheet:=excelsource.workbooks[1].worksheets[1];

      excelsource.DisplayAlerts := False;
      excelsource.Quit;
      Excelsource:=Unassigned;
      VarClear(excelsource);
      end;
//这里释放了变量,但是在内存中还是有EXCEL,一定要等下面部分全部执行完后才真正的释放,不知道为啥???????????  end;
。。
with OpenDialog4.Files do
  begin
   for I := 0 to Count - 1 do
      BEGIN
         Excelsource := CreateOleObject( 'Excel.Application' );
         Excelsource.workbooks.open(opendialog4.files.Strings[I]);
         Excelsource.WorkSheets[1].Activate;
         sheet:=excelsource.workbooks[1].worksheets[1];

      excelsource.DisplayAlerts := False;
      excelsource.Quit;
      Excelsource:=Unassigned;
      VarClear(excelsource);
//这里释放了变量,但是在内存中还是有EXCEL,一定要等下面部分全部执行完后才真正的释放,不知道为啥???????????    end;
  end;
。ExcelApp.Save;
excelapp.DisplayAlerts := False;
excelapp.Quit;
excelapp:=Unassigned;
VarClear(excelapp);excelmerge.DisplayAlerts := False;
excelmerge.Quit;
excelmerge:=Unassigned;
VarClear(excelmerge);excellastday.DisplayAlerts := False;
excellastday.Quit;
excellastday:=Unassigned;
VarClear(excellastday);