您的位置:首页网页设计经验技巧 → C#调用Excel的资源占用问题

C#调用Excel的资源占用问题

时间:2009/7/10 8:25:00来源:本站整理作者:我要评论(0)

 看了农民伯伯的《C# 操作Excel之旁门左道 [ C# | Excel ]》以后,无意中想起2年前做的一个小项目,自己也遇到过Excel的进程无法结束掉的这种怪问题,最终还是解决了,其实解决的原理很简单,Excel是一个很特殊的东西,所有对它的操作都是独占的,因此就有必要在资源释放上严格进行。为了更好的跟大家交流,也同时帮助那些正在被困惑的程序员朋友们,下面就附上我以前的一段小代码,为了能够更快更容易说明问题,代码经过了删减,只保存了结构的完整性,但不保证能够顺利编译通过,代码如下:

  需要引用的命名空间

  using Execl = Microsoft.Office.Interop.Excel;


  try
   {
   Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
   Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open(lujing2, System.Type.Missing, false, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);
   excel.Visible = true;
   Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item(1);
   //开始执行Excel操作

   if (excel.ActiveWorkbook.Saved == false)
   {
   excel.ActiveWorkbook.Save();
   }
   excel.Quit();
   excel = null;
   Application.Exit();
   GC.Collect(System.GC.GetGeneration(worksheet));
   GC.Collect(System.GC.GetGeneration(workbook));
   GC.Collect(System.GC.GetGeneration(excel));
   }
   catch
   {

   }
   finally
   {
   GC.Collect();
   }


   同时,这里有一个比较有争议的问题,我特此声明下:微软强烈建议不要通过GC.Collect方法来强制执行垃圾手机,因为那会妨碍GC本身的工作方式。只有在明确知道有大量对象停止引用时,

才考虑使用GC.Collect方法来调用收集器

相关阅读 excel日期格式怎么改excel数字变成代码怎么办vlookup怎么用excel剪切快捷键是什么excel打印区域怎么设置excel如何设置下拉菜单颜色 excel设置下拉菜单颜色方法Excel怎么多人同时编辑 Excel多人在线编辑功能介绍Excel2016数据透视表排序和筛选教程

文章评论
发表评论

热门文章 Wordpress本地安装教程dx1.5如何设置二级域名

最新文章 hbuilder有哪些快捷键Wordpress本地安装教程 Wordpress本地安装教程expression web 4文档乱码解决方法dz 2.5“收藏本版”关闭小对话框无法关闭解在制作安装软件之前,您必须先将易语言存盘,

人气排行 如何使用multipart/form-data格式上传文件Photoshop PS图层混合模式详解(非常详细)ISAPI_Rewrite3使用教程网站里添加收藏和设为首页代码桌面快捷方式图标不见了C#获取执行程序所在的当前路径的方法详解(XMLHttpRequest)进行跨域请求方法如何用远程桌面连接进行传输文件