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

excel|进程

 最近用C#写winform,将EXCEL文件中的数据写入数据库中,将DataGrid中的数据导出为EXCEL格式。最后发现EXCEL内存泄漏,在应用程序不退出的情况下,总是有一个EXCEL进程不能清除!在网上找了许多答案,都是无用的答案!什么不管三七二十一杀EXCEL进程啦,不是最有效的方法!其实最有效的方法就是下面这个方法:
1、对excel操作做成一个函数,然后调用此函数。在函数中调用GC.Collect();无用,因为GC不回收调用自己的那一段代码块!
2、在函数的下面调用GC.Collect();语句。你会发现EXCEL进程没有了!
例如:
private void Import() {
     Excel.Application myExcel  = new Excel.Application();
     myExcel.Workbooks.Add(openFileDialog1.FileName);
    //........
   //读取EXCEL文件,导入到数据库.
   //清除excel垃圾进程
   myExcel.Workbooks.Close();
   myExcel.Quit();
   System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
   myExcel = null;
}
 private void ExcelImport() {
   Import();
   GC.Collect();
 }
//以下按button1按钮,使用多线程读取EXCEL文件,导入到数据库.
private void button1_Click(object sender, System.EventArgs e) {
    if(openFileDialog1.ShowDialog() == DialogResult.OK) {
     System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(ExcelImport));
     t.Start();
    }
  }

时间: 2024-10-29 03:45:04

.net中清除EXCEL进程最有效的方法的相关文章

怎么在Word中插入Excel数据表格4种方法

方法1.直接粘贴 我们在excel中选中要放到word中的文档excel内容,然后ctrl+c进行复制,再在word文档中我们再ctrl+v 粘贴 就完成了. 方法2.我们先在word中点击菜单上的"插入"--"对象"--"由文件创建"--"浏览"选择中好excel表格就可以插入了.             方法3.同样是在word中我们点击菜单上的"插入"--"对象"--"新

Linux中Kill掉进程的10种方法

  常规篇: 首先,用ps查看进程,方法如下: 代码如下: $ ps -ef -- smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helper smx 1824 1822 0 11:38 pts/0 00:00:02 bash smx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin smx 1

怎么在excel中求和?excel进行数学运算的方法

1.创建一个新excel文件,如图所示. 2.然后我们随便输入几行数据,然后在顶部输入"=SUM(3,5)" 3+5,其结果等于8 3.你也可以选中某个表格后,点击fx 4.如在打开窗口我们找到里面的 SUM, ,SUM是求和 5. 然后可以输入单元格也可以选择单元框区域如 B1和C1  6.然后这样会在A1结果为8 7.我们如果点击错了,可以双击编辑,然后出现number1,number2的内容, 这样也同样会求和了 友情提示,如果你是表一列的和我们只要选中,然后在excel状态栏自

关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.

问题描述 自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下.现象:我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是e

从DataView中生成Excel报表的方案(C#)

excel|生成excel 前言:前几天一同事问我如何利用C#将数据导到Excel文件当中,当时比较忙没有顾得上去研究,今天特地研究了一下,基本搞定,下面就具体介绍如何将DataView中的数据按照一定格式存到Excel文件当中.正文:一.首先要引用一个Excel的组件,我一开始是在Office XP下尝试的,不成功,后来把XP给干掉,装2k,就成功了,所以这里分享的是Office 2k下引用相关组件来实现功能的,在工程中引用COM标签中的Microsoft Excel 9.0 Object L

在ASP.NET中使用EXCEL之权限设置

在ASP.NET中使用EXCEL,首先需要对COM组件的权限进行设置.如果未设置权限,则会报访问拒绝的错误.详细错误信息通常如下: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.UnauthorizedAccessException: 拒绝访问. ASP.NET 未被授权访问所请求的资源.请考虑授予 ASP.NET 请求标识访问此资源的权限.ASP.NET 有一个在应用程序没有模拟时使

asp.net中导出excel数据的方法汇总

  1.由dataset生成  代码如下   public void CreateExcel(DataSet ds,string typeid,string FileName)     {     HttpResponse resp;     resp = Page.Response;     resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");     resp.AppendHeader("Co

如何在新窗口中打开Excel表格

Excel20102007 在一个窗口打开文件的本意原是为了节省内存.但是很多使用 Windows 7 的同学还是喜欢两个窗口一拉一靠左右排列,既便于比较,也不妨碍操作.问题是,打开多个 excel 文件时,它总是显示在一个窗口中啊,怎样在不同的窗口中打开文件呢? Excel20102007 在一个窗口打开文件的本意原是为了节省内存.但是很多使用 Windows 7 的同学还是喜欢两个窗口一拉一靠左右排列,既便于比较,也不妨碍操作.问题是,打开多个 excel 文件时,它总是显示在一个窗口中啊,

清除Excel模拟运算表

  小编给我们大家讲解了单变量模拟运算表和单双变量模拟运算表.通过进一步操作和实践,相信大家都掌握了的单变量模拟运算表和单双变量模拟运算表操作,在实际操作中没有一成不变的尤其是编辑制作产品销售统计表,当我们有一天需要删除我们原有的数据表格时怎么办?别急今天我们将为大家讲解如何清除Excel模拟运算表. 1.当您输入单元格中有一个,即要改变其中数据的单元格只有一个,那么应使用"单变量"模拟运算表.当我们需要清除模拟运算表. 清除方法与清除工作表中其它区域的方法相同,可以用菜单命令的方式,