button的click事件:
{   Opendialog1.InitialDir := ExtractFileDir(paramstr(0));
   opendialog1.Execute;
   try
      excelapplication1.Connect;//
   except
      MessageDlg('Excel may not be installed',mtError,[mbOk],0);
      abort;
   end;
   excelapplication1.Visible[0] := true;
   excelapplication1.Caption := 'Excel Application';
   Try
      excelapplication1.Workbooks.Open(opendialog1.FileName,
  null,null,null,null,null,null,null,null,null,null,null,null,0);
   except
      begin
        excelapplication1.Disconnect;
        excelapplication1.Quit;
        showmessage('选择Excel错误');
        exit;
      end;
   end;   excelworkbook1.ConnectTo(excelapplication1.Workbooks[1]);
   excelworksheet1.ConnectTo(excelworkbook1.Worksheets[1] as _worksheet);
   
   //添入数据信息
   excelworksheet1.Cells.Item[6,2]:='data';
    excelapplication1.Disconnect;
}如果在这里写入excelapplication1.quit/则执行时excel直接退出。
如果什么都不写,则excel资源没有释放掉,程序报错/不知道有碰到类似问题的朋友吗?
在什么地方释放资源合适呢?或者写在什么位置?谢谢各位!!

解决方案 »

  1.   

    button的click事件:
    {   Opendialog1.InitialDir := ExtractFileDir(paramstr(0));
       opendialog1.Execute;
       try
          excelapplication1.Connect;//
       except
          MessageDlg('Excel may not be installed',mtError,[mbOk],0);
          abort;
       end;
       excelapplication1.Visible[0] := true;
       excelapplication1.Caption := 'Excel Application';
       Try
          excelapplication1.Workbooks.Open(opendialog1.FileName,
      null,null,null,null,null,null,null,null,null,null,null,null,0);
       except
          begin
            excelapplication1.Disconnect;
            excelapplication1.Quit;//YES
            showmessage('选择Excel错误');
            exit;
          end;
       end;   excelworkbook1.ConnectTo(excelapplication1.Workbooks[1]);
       excelworksheet1.ConnectTo(excelworkbook1.Worksheets[1] as _worksheet);
       
       //添入数据信息
       excelworksheet1.Cells.Item[6,2]:='data';
        excelapplication1.Disconnect;
       //this place write it 
    }
      

  2.   

    button的click事件:
    {   Opendialog1.InitialDir := ExtractFileDir(paramstr(0));
       opendialog1.Execute;
       try
          excelapplication1.Connect;//
       except
          MessageDlg('Excel may not be installed',mtError,[mbOk],0);
          abort;
       end;
       excelapplication1.Visible[0] := true;
       excelapplication1.Caption := 'Excel Application';
       Try
          excelapplication1.Workbooks.Open(opendialog1.FileName,
      null,null,null,null,null,null,null,null,null,null,null,null,0);
       except
          begin
            excelapplication1.Disconnect;
            excelapplication1.Quit;//YES
            showmessage('选择Excel错误');
            exit;
          end;
       end;   excelworkbook1.ConnectTo(excelapplication1.Workbooks[1]);
       excelworksheet1.ConnectTo(excelworkbook1.Worksheets[1] as _worksheet);
       
       //添入数据信息
       excelworksheet1.Cells.Item[6,2]:='data';
        excelapplication1.Disconnect;
       //this place write it 
    }
      

  3.   

    如果在excelapplication1.disconnect后边直接写excelapplication1.quit;
    则excel直接退出啊。不能对excel进行操作了。
      

  4.   

    我都是用OLE去创建EXCEL的各种对象的
      

  5.   

    excelapplication1 := Unassigned;
    VarClear(excelapplication1);
      

  6.   

    我是这样解决的!定义一个Boolean,然后判断是否打开过Excel!是则在推出时:quit;