delphi excel 對象釋放


前幾天問過這個問題,很多朋友給了我回答。本以為解決了。但現在新問題又來了。


代碼如下:
  ...
  ExcelApp,workbook:   Variant;  
  ...
  ExcelApp:=CreateOleObject( 'Excel.Application ');
  workbook:=CreateOleObject( 'Excel.sheet ');


上次大家給我的代碼是:
workbook.close;
ExcelApp.quit;
workbook:=unassigned;
excelapp:=unassigned;


這些代碼放在窗口的onclose方法里沒問題,當窗口釋放后,EXCEL對象也會中內存中清出。但我如果把這些代
碼放在其他地方,比如按鈕的onclick里,就不行了,點了按鈕后,EXCEL對象還是駐留在內存里。

我的程序的功能是把excel表中的數據導入到access里。我的想法是導入完一個excel表后,先把excel對象釋放

,然后可以繼續選另一個要導入的excel表。我把釋放的代碼放在導入按鈕里。但結果是,導入數據后,excel

對象不能釋放。再選其他excel表,再按導入鍵,就會出錯。


請問應該怎樣才能通過單擊按鈕釋放excel對象?

 

 

 

解答:

 

      workbook沒有釋放
其實不用WorBook也行,如下:
Try
  ExcelApp:=   CreateOleObject(   'Excel.Application '   );
  ExcelApp.WorkBooks.Open(YourXlsFileName);//打開Excel文件
  ExcelApp.WorkSheets[1].Activate;//設定第一個Sheet為活動的

  ExcelApp.Cells[i,j].Value:=YourString;//向單元格中寫數據
  YourString:=ExcelApp.ActiveSheet.Cells.item[i,j]);   //讀取單元格.

  ExcelApp.ActiveSheet.PrintOut;//答應
  ExcelApp.ActiveWorkBook.SaveAs(SavedFileName);//存盤
  ExcelApp.Quit;
  ExcelApp:=UnAssigned;  
Except
  Try   //多用一個Try..Finally是防止在讀寫單元格過程中出錯,退出時可能沒有釋放Excel,造成內存漏洞
    ExcelApp.ActiveWorkBook.Saved   :=   True;
    ExcelApp.Quit;
  Finally
    ExcelApp:=UnAssigned;
  End;
End;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM