try
    ExcelApplication1.Connect;
  Except
    MessageDlg('Excel may not be installed!',mtError,[mbOK],0);
    abort;
  end;
  try
    ExcelApplication1.Visible[0]:=False;
    ExcelApplication1.Workbooks.Add(OpenDialog1.FileName,0);
    ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
   ExcelWorkbook1.Close;
    ExcelApplication1.Disconnect;
    ExcelApplication1.Quit;
    ShowMessage('已成功添加!');
except
      ExcelWorksheet1.Free;
      ExcelWorkbook1.Free;
      ExcelApplication1.Disconnect;
      ExcelApplication1.Quit;
      ShowMessage('出错啦!');在上面这个程序中无论try成功还是不成功最后进程中都还有一个Excel.exe的进程,怎么让Excel释放关闭这个Excel.exe进程啊???

解决方案 »

  1.   

    可是用except是为了防止出错啊,用except不也是可以的吗?
      

  2.   

    hsmserver(撒哈拉之雨的悲伤)
    的意思是把释放语句放在finally块里面,finally里面才是一定要执行的代码
    except里面的代码只有出错了才执行,否则是不会执行的
      

  3.   

    我就是让它出错了的话也要关闭Excel.exe,不出错的话也要关闭Excel.exe.
    但现在我这是出错不出错都关不了这个进程.
      

  4.   

    这个就不清楚了,没这么操作过Excel不过按照你的要求,释放资源的代码肯定是需要写在finally代码块里面的
      

  5.   

    在外层套一层
    Try
    finally
     ExcelWorksheet1.Free;
     ExcelWorkbook1.Free;
     ExcelApplication1.Disconnect;
     ExcelApplication1.Quit;
    end;
      

  6.   

    采用ExcelApplication,ExcelWorkbook,ExcelWorksheet来做的话用ExcelApplication1:=unassigned它会出现"Incompatible types:'TExcelApplication'and 'Variant'的出错信息.
    我在try和except都有用disconnected和quit.
      

  7.   

    try
        ExcelApplication1.Connect;
      Except
        MessageDlg('Excel may not be installed!',mtError,[mbOK],0);
        abort;
      end;
      try
        //ExcelApplication1.Visible[0]:=False;
        //ExcelApplication1.Workbooks.Add(OpenDialog1.FileName,0);
        //换成下面的试试,我程序中也有Excel导入导入功能,没有你说的那个问题呀
        ExcelApplication1.Workbooks.Open(OpenDlg.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);
        ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
        //ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
        ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
       ExcelWorkbook1.Close;
        ExcelApplication1.Disconnect;
        ExcelApplication1.Quit;
        ShowMessage('已成功添加!');
    except
          ExcelWorksheet1.Free;
          ExcelWorkbook1.Free;
          ExcelApplication1.Disconnect;
          ExcelApplication1.Quit;
          ShowMessage('出错啦!');
      

  8.   

    Add改成Open后还是会有这样的问题出现,崩溃了...