`
wjm901215
  • 浏览: 154069 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

安全彻底关闭实例Excel.Application后产生的进程方法

阅读更多

说明一下:
private Excel.Application _xlApp;//Excel应用程序
private Excel.Workbook _xlWorkbook;//获取Excel工作薄,默认为调用Open([Template])时创建
private Object oMissing = System.Reflection.Missing.Value; //实例化对象时缺省参数


我们实例并打开Excel时至少会用到
xlApp= new Excel.ApplicationClass();

创建一个Excel应用,可是一般每实例一次就产生一个Excel进程,这里提供安全彻底关闭实例Excel.Application后产生的进程,方法中的_xlWorkbook为实例ApplicationClass后
_xlWorkbook = _xlApp.Workbooks.Add(oMissing); //创建并返回Excel工作薄

/// <summary>
/// 关闭实例Excel.Application后产生的进程
/// </summary>
public void Close()
{
if (_xlApp != null)
{
int generation = 0;

_xlApp.UserControl = false;

//如果您将 DisplayAlerts 属性设置为 False,则系统不会提示您保存任何未保存的数据。
//_xlApp.DisplayAlerts = false;

if (_xlWorkbook != null)
{
//如果将 Workbook 的 Saved 属性设置为 True,则不管您有没有进行更改,Excel 都不会提示保存它
//_xlWorkbook.Saved = true;
try
{
////经过实验,这两句写不写都不会影响进程驻留。
////如果注释掉的话,即使用户手动从界面上关闭了本程序的Excel,也不会影响
//_xlWorkbook.Close(oMissing,oMissing,oMissing);
//_xlWorkbook = null;

}
catch
{
//用户手动从界面上关闭了本程序的Excel窗口
}
}

//即使用户手动从界面上关闭了,但是Excel.Exe进程仍然存在,用_xlApp.Quit()退出也不会出错,用垃圾回收彻底清除
_xlApp.Quit();

//System.Runtime.InteropServices.Marshal.ReleaseComObject((object)_xlApp);

generation = System.GC.GetGeneration(_xlApp);
_xlApp = null;

//虽然用了_xlApp.Quit(),但由于是COM,并不能清除驻留在内存在的进程,每实例一次Excel则Excell进程多一个。
//因此用垃圾回收,建议不要用进程的KILL()方法,否则可能会错杀无辜啊:)。
System.GC.Collect(generation);
}

oMissing = null;
}
http://community.csdn.net/Expert/topic/4252/4252815.xml?temp=.2856562

分享到:
评论

相关推荐

    CreateObject(Excel.Application)报错解决方法-win10.rar

    `CreateObject`函数是VBA(Visual Basic for Applications)或其他基于COM(Component Object Model)的语言中用来实例化一个对象的方法,它允许我们创建并操作Excel应用程序对象,即使Excel并未在当前进程中运行。...

    C#彻底关闭Excel进程excel.exe

    然而,操作完成后,如果不正确地关闭Excel进程,可能会导致文件被占用,影响其他程序的运行。本文将深入探讨如何在C#编程环境中,通过代码彻底关闭Excel进程“excel.exe”。 首先,我们需要理解什么是进程。在操作...

    delphi的ExcelApplication控件excel操作

    通过上述方法,开发者可以利用Delphi的ExcelApplication控件高效地进行Excel文件的处理,实现自动化报表生成、数据分析等任务。需要注意的是,由于涉及到COM组件,所以在不同版本的Excel上,某些功能可能有差异,...

    C#无法关闭Excel进程的解决办法.

    4. **调用Kill方法**:最后,在关闭所有相关的Excel对象之后,调用`PublicMethod.Kill(excel)`方法来确保Excel进程被彻底关闭。 ```csharp wb.Close(Type.Missing, Type.Missing, Type.Missing); wbb.Close(Type....

    .net中清除EXCEL进程最有效的方法

    在.NET开发中,有时我们需要与外部应用程序如Microsoft...因此,尽管这种方法在处理完Excel后立即关闭进程非常有用,但通常建议让.NET的自动垃圾收集机制来管理内存。只有在确实需要时,才应该考虑使用`GC.Collect()`。

    C# 导出Excel,导出Excel后关闭进程中Excel.exe

    我们将深入探讨这两个关键知识点:如何导出数据到Excel以及如何在导出后关闭Excel进程。 首先,我们要了解C#中导出数据到Excel的基本原理。通常,这涉及到使用Microsoft Office Interop库,它允许我们直接操作Excel...

    excelApplication

    本文将深入探讨如何在C#环境中操作Excel,即“excelApplication”。 首先,要进行C#与Excel的交互,你需要引入Microsoft.Office.Interop.Excel库,这是.NET Framework提供的一个接口,允许C#代码直接调用Excel应用...

    Microsoft.Office.Interop.Excel.dll各个版本

    当使用Microsoft.Office.Interop.Excel时,.NET程序可以创建Excel应用实例,操作工作簿和工作表,执行公式计算,甚至触发用户界面事件,就像直接在Excel中操作一样。 在"各个版本"的上下文中,每个新版本的...

    调用Excel后的解决方法

    当我们在C#或ASP.NET应用程序中使用Microsoft.Office.Interop.Excel库操作Excel文件后,如果未能正确释放资源或关闭Excel进程,则可能会出现Excel进程挂起的情况。这种情况不仅会占用系统资源,还可能导致程序运行...

    Microsoft.Office.Interop.Excel.DLL v11.0.5530.0

    // 创建Excel应用实例 Application excel = new Application(); excel.Visible = true; // 设置为可见 // 打开现有工作簿 Workbook workbook = excel.Workbooks.Open("C:\\path\\to\\your\\file.xlsx"); Worksheet ...

    microsoft.office.interop.excel.dll各种版本

    另外,使用完Excel对象后,记得正确释放资源,防止进程泄漏。 标签中的“read write”表示这个库主要用于读取和写入Excel文件。C#程序员可以利用它实现自动化报告生成、数据分析、数据导入导出等多种功能。此外,还...

    excel.exe完美关闭绝杀

    为了解决这个问题,并实现只关闭当前应用程序产生的Excel进程而不影响其他正在运行的Excel实例,下面将详细介绍一种有效的方法。 #### 一、基础知识概述 1. **Excel.exe**:这是Microsoft Office Excel 的执行文件...

    c#CEXCEL关闭(解决无法关闭进程的问题)

    在使用C#编程时,有时我们需要操作Excel进行数据读写,但操作完成后,可能会遇到Excel进程无法正常关闭的问题。这通常是因为程序没有正确地释放Excel应用程序实例或工作簿对象,导致进程仍然在后台运行。本篇文章将...

    Microsoft.Office.Interop.Excel.zip

    9. **释放资源**:完成操作后,记得关闭工作簿、释放Excel应用程序实例并设置为null,防止内存泄漏,如`excelApp.Quit();`,`Marshal.ReleaseComObject(excelApp); excelApp = null;` 10. **性能考虑**:虽然...

    应用程序根据DataGridView导出Excel报表,Microsoft.Office.Interop.Excel.dll

    Excel.Application excelApp = new Excel.Application(); excelApp.Visible = true; // 可选,设置为true显示Excel进程 // 创建新的工作簿 Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel....

    杀死Excel进程

    假设有一个Excel应用实例`myExcelApp`,可以通过以下方式安全地结束该实例对应的Excel进程: ```csharp ExcelKiller.KillExcel(myExcelApp); ``` #### 总结 `ExcelKiller`类提供了一个安全、有效的方式来结束特定...

    microsoft.office.interop.excel.dll

    2. 创建Excel应用程序实例:通过创建Application类的实例,启动Excel进程。 3. 操作工作簿和工作表:通过Workbook和Worksheet类,创建、打开、关闭工作簿,以及对工作表进行读写操作。 4. 执行宏:如果需要,可以...

    C#操作EXCEL方法谈(附实例源码和详细讲解)

    本压缩包提供的"**C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)**"文件,应该包含具体的C#代码示例,详细解释了如何实现这些操作。通过阅读和实践这些代码,你可以深入理解C#操作Excel的各种技术,并将...

    KillExcel.zip

    这通常需要先使用`CreateObject`或`GetObject`函数获取到`WScript.Shell`或`Shell.Application`对象,然后调用其`Run`或`SendKeys`方法执行相应的命令行操作,例如`taskkill /F /IM excel.exe`来终止Excel进程。...

Global site tag (gtag.js) - Google Analytics