C#调用Excel与附加代码

开发 后端
本文介绍C#调用Excel,Excel是一个很特殊的东西,所有对它的操作都是独占的,因此就有必要在资源释放上严格进行。

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

  1. using Execl = Microsoft.Office.Interop.Excel;  
  2. try  
  3. {  
  4. Microsoft.Office.Interop.Excel.Application excel = 
    new Microsoft.Office.Interop.Excel.Application();  
  5. 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);  
  6. excel.Visible = true;  
  7. Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.
    Interop.Excel.Worksheet)workbook.Worksheets.get_Item  
  8. //开始执行Excel操作  
  9.  
  10. if (excel.ActiveWorkbook.Saved == false)  
  11. {  
  12. excel.ActiveWorkbook.Save();  
  13. }  
  14. excel.Quit();  
  15. excel = null;  
  16. Application.Exit();  
  17. GC.Collect(System.GC.GetGeneration(worksheet));  
  18. GC.Collect(System.GC.GetGeneration(workbook));  
  19. GC.Collect(System.GC.GetGeneration(excel));  
  20. }  
  21. catch  
  22. {  
  23.  
  24. }  
  25. finally  
  26. {  
  27. GC.Collect();  

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

才考虑使用GC.Collect方法来调用收集器,以上介绍C#调用Excel

【编辑推荐】

  1. 浅谈C#中构造函数和成员函数
  2. C#函数的参数返回结构数组
  3. 概述ASP.NET中的NGWS Runtime
  4. C#函数与JavaScript函数
  5. 详解C# Object.Equals函数
责任编辑:佚名 来源: IT168
相关推荐

2009-09-02 16:36:37

C#调用Excel对象

2009-09-02 16:43:55

C#调用Excel的C

2009-08-18 15:49:19

C# 操作Excel

2009-08-19 04:16:00

C#代码与#函数相互调

2009-08-06 17:57:14

C# webServiC# WebServi

2009-08-17 16:18:47

C#调用CreateO

2009-10-23 11:31:05

CLR Via C#调

2009-08-31 10:39:15

C#调用ListEmp

2009-08-31 18:05:14

C#调用WalkTre

2009-08-31 16:33:28

C#调用Dispose

2009-08-04 09:30:33

C#调用ImageAn

2009-08-31 16:17:45

C#调用instanc

2009-08-18 13:49:21

C# 操作Excel

2009-08-13 18:26:35

C#继承构造函数

2009-08-18 16:14:05

C# 操作Excel

2009-08-18 16:20:09

C# 操作Excel

2009-08-25 15:26:03

C#调用ImOK

2009-08-07 17:19:50

C#调用外部进程

2009-07-31 16:12:10

Windows APIC#

2009-08-07 16:10:20

C#调用API
点赞
收藏

51CTO技术栈公众号