.Net操作Excel后彻底释放资源

.Net操作Excel后彻底释放资源 

和同事在工作中遇到的:
在.net中,有时候需要对Excel文档进行操作,但通常我们并不能真正的正确释放Excel占用的资源。
我们在代码中通常会这样操作Excel

Dim excelWorkBook As Excel.Workbook
Dim excelWorkSheet As Excel.Worksheet
Dim appExcel As New Excel.Application
Dim excelRange As Excel.Rangge
…………


在操作完成后我们通常这样释放:

excelWorkBook.Close()
appExcel.Quit()
excelWorkSheet = Nothing
excelWorkBook = Nothing
appExcel = Nothing
……


看起来很正确嘛。OK,请打开资源管理器,发现Excel的进程了吗?再运行几次你的程序,是不是发现Excel的进程越来越多了?相信你现在有点想骂人了吧。
正确的释放资源的方法是:
excelWorkBook.Close()
appExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel)
excelWorkSheet = Nothing
excelWorkBook = Nothing
appExcel = Nothing
……
System.GC.Collect(0)
这时候可以发现,Excel进程终于乖乖消失了。
PS:如果还不行的话,那就把你所有打开过的有关Excel的对象都用ReleaseComObject释放掉。

2006/12/05 更新:
经测试,在不同的机器上,内存的释放形式会有所差异。
因此,最保险的方法是把使用过的所有Excel相关的对象都用ReleaseComObject释放掉,最后调用System.GC.Collect(0)回收内存。例如:


excelWorkBook.Close()
appExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorkSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject (excelWorkBook)
excelWorkSheet = Nothing
excelWorkBook = Nothing
appExcel = Nothing
System.GC.Collect(0)
……
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: .NET操作Excel是支持多版本的。在.NET平台上,我们可以使用不同的库来操作Excel,其中包括Microsoft Office.Interop.Excel、NPOI、EPPlus等。 Microsoft Office.Interop.Excel是最常用的库,它是使用COM对象来操作Excel的。这种方式可以支持几乎所有的Excel版本,包括Excel 2003、Excel 2007、Excel 2010、Excel 2013和Excel 2016等。使用Interop库,我们可以实现对Excel文件的读取、写入、修改和格式设置等操作。 另外,NPOI是一个开源项目,它提供了一个.NET平台上操作Office文档的库。它可以读取和写入Excel文件,并且支持多个Excel版本。我们可以使用NPOI来对Excel进行操作,无论是更早的版本,如Excel 97-2003,还是较新的版本,如Excel 2007及其以上版本。 EPPlus是一个开源的.NET库,专门用于Excel的读写操作。它支持多个Excel版本,包括Excel 2007及其以上版本。EPPlus提供了简单易用的API,使开发人员可以轻松地读取和写入Excel文件,创建表格、样式和图表等。 综上所述,.NET平台对于操作Excel提供了多个库,这些库支持多个Excel版本。我们可以根据具体需求选择适合的库来操作Excel文件,无论是早期的Excel版本还是较新的版本。这样,我们可以更加方便地进行Excel数据的读写和处理。 ### 回答2: .NET操作Excel支持多版本是因为在.NET框架中,我们可以使用一种称为"Microsoft.Office.Interop.Excel"的库来读写Excel文件。这个库是由Microsoft官方提供的,支持多个不同版本的Excel。它允许我们在.NET应用程序中创建、打开、读取、写入和保存Excel文件。 通过使用这个库,我们可以在代码中指定所需的Excel版本来操作文件。无论是旧版本的Excel(如Excel 97-2003)还是较新版本的Excel(如Excel 2007及更高版本),都可以使用这个库来进行操作。 在操作Excel文件时,我们可以使用一些通用的方法,例如创建新的工作簿、在工作表中写入数据、读取工作表中的数据等。这些方法对于不同版本的Excel都是兼容的,所以我们不用担心会因为使用不同的Excel版本而导致代码出错。 然而,需要注意的是,不同版本的Excel支持的功能有所不同。较新版本的Excel可能具有更多的功能和特性,而旧版本的Excel可能不支持这些功能。因此,在开发应用程序时,我们需要根据目标用户使用的Excel版本来选择适合的功能,以确保应用程序在不同版本的Excel中运行正常。 综上所述,.NET操作Excel支持多版本,可以通过使用"Microsoft.Office.Interop.Excel"库在.NET应用程序中读写多个不同版本的Excel文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值