C#利用com操作excel釋放進程的解決方法
更新時間:2013年03月22日 16:50:41 作者:
最近利用Microsoft.Office.Interop.Excel.Application讀取一個excel后,進程中一直存在excel,在網(wǎng)上找了一陣子,其中有幾個解決方案
第一個
復(fù)制代碼 代碼如下:
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheets);
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
excelApp = null;
wbclass = null;
sheets = null;
worksheet = null;
range = null;
GC.Collect();
GC.WaitForPendingFinalizers();
釋放不徹底,還是有進程存在。
第二種
復(fù)制代碼 代碼如下:
//調(diào)用底層函數(shù)獲取進程標示
[DllImport("User32.dll")]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int ProcessId);
private static void KillExcel(Microsoft.Office.Interop.Excel.Application theApp)
{
int id = 0;
IntPtr intptr = new IntPtr(theApp.Hwnd);
System.Diagnostics.Process p = null;
try
{
GetWindowThreadProcessId(intptr, out id);
p = System.Diagnostics.Process.GetProcessById(id);
if (p != null)
{
p.Kill();
p.Dispose();
}
}
catch (Exception ex)
{
}
}
這個方法比較好,我試過了可以關(guān)閉掉進程。
您可能感興趣的文章:
- c#將Excel數(shù)據(jù)導入到數(shù)據(jù)庫的實現(xiàn)代碼
- ASP.NET(C#)讀取Excel的文件內(nèi)容
- C#數(shù)據(jù)導入/導出Excel文件及winForm導出Execl總結(jié)
- C#將html table 導出成excel實例
- C#操作Excel數(shù)據(jù)增刪改查示例
- c#讀寫excel文件使用示例
- c#創(chuàng)建vc可調(diào)用的com組件方法分享
- C# 無需COM組件創(chuàng)建快捷方式的實現(xiàn)代碼
- C#實現(xiàn)DataSet內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel和Word文件的通用類完整實例
- C#使用winform簡單導出Excel的方法
- C#的Excel導入、導出
- C#基于COM方式讀取Excel表格的方法
相關(guān)文章
關(guān)于C#調(diào)用C++dll傳指針釋放內(nèi)存問題
這篇文章主要介紹了關(guān)于C#調(diào)用C++dll傳指針釋放內(nèi)存問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12C#編程實現(xiàn)發(fā)送郵件的方法(可添加附件)
這篇文章主要介紹了C#編程實現(xiàn)發(fā)送郵件的方法,具備添加附件的功能,涉及C#文件傳輸及郵件發(fā)送的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11