var
  ConnStrExcel : TADOQuery;
begin
   ConnStrExcel := TADOQuery.create(nil);
   connStr1 := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source="'+receiveman+'";Extended Properties="Excel 8.0;HDR=NO;IMEX=1"';
   ConnStrExcel.ConnectionString := connStr1;
   SqlStr := 'select * from [Sheet1$]';
   ConnStrExcel.SQL.Clear;
   ConnStrExcel.SQL.Add(SqlStr);
   ConnStrExcel.Open;
   ConnStrExcel.free;
   ConnStrExcel.Close;
   //Freeandnil(ConnStrExcel);
不知道怎么回事无法完全断开连接,以至于无法用DELETEFILE将receiveman删除

解决方案 »

  1.   

    这是一个大问题,因为当excel异常终止的时候,进程却不能被释放,所以最好在程序里面写一个函数,专门杀死excel进程,在适当的时候调用
      

  2.   

    看看相关的api,系统进程搜索和kill的
      

  3.   

    换成用一个TADOConnection连接上去,看能不能断开连接。为防出现异常,加上try...finally,在finally里关连接
      

  4.   

    楼上都不行的,关键就在于,delphi没法捕捉到excel发生的异常。因此,好的做法还是直接kill系统进程