在asp.net中操作excel如何关闭excel的进程

原创 2004年06月23日 09:55:00

在asp.net中操作excel经常会出现关闭不了后台excel进程的情况,本人最近搜索了一些资料,

已可以成功在程序中关闭excel,代码如下:

Excel.Application myExcel;
Excel._Workbook myWB;
Excel._Worksheet myWS = null;
Excel.Range myRange = null;

string filePath = Server.MapPath("//test//");
share.share myShClass = new share.share();
string strP = filePath + myShClass.getCurTimeAsID() + ".xls";
FileInfo file = new FileInfo(strP);

try
{
    myExcel = new Excel.Application();
    myExcel.Visible = false;
    myWB = myExcel.Workbooks.Add(true);
    myWS = (Excel._Worksheet)myWB.Sheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    myWS = (Excel._Worksheet)myWB.Sheets[1];
    for(int i=0;i<arrHead.Count;i++)
    {
           myWS.Cells[1,i+1] = arrHead[i];
           myRange = (Excel.Range)myWS.Cells[1,i+1];
           FormatRange(19,ref myRange);
    }
    myWB.SaveAs(file.FullName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
catch(Exception e)
{
    Response.Write("初始化Excel文件出错,错误信息如下: "+e.ToString());
    return;
}
 
myWB.Close(false, Type.Missing, Type.Missing);
myExcel.Workbooks.Close();
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myRange);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myWS);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myWB);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myWS = null;
myWB = null;
myExcel = null;
GC.Collect();

在写代码的过程中,按照上诉方法写还出现过excel没有关闭的情况,后来发现主要是

由于对其中的一个reference进行了两次单独的赋值,例如

myRange = (Excel.Range)myWS.Cells[1,1];
myRange = (Excel.Range)myWS.Cells[1,2];

上面这样写有时就会有问题,而改成

    for(int i=0;i<=2;i++)
    {
           myRange = (Excel.Range)myWS.Cells[1,i];
    }

就不会有问题了,虽然不太明白为什么,但是总归是能找到问题的出出了,

所以建议大家对excel的对象进行操作时尽量使用循环吧。

总的来说,asp.net对excel的操作还是有不少问题的,不知道因为什么原因就会

关闭不了excel的进程,而且对excel的操作还需要更改服务器的一些安全设置,

比较的麻烦,但是用以上方法基本上可以做到正常的关闭excel了,希望能对

大家有帮助!

ASP.NET中调用EXCEL提示“拒绝访问”

asp.net执行new Excel.ApplicationClass();出现如下错误信息:拒绝访问。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及...
  • hurtmanzc
  • hurtmanzc
  • 2006年05月10日 12:02
  • 4444

在ASP.NET中使用Excel时,发生拒绝访问?怎么办???

我在WebForm中写了如下代码:Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As...
  • xiaoxiaohai123
  • xiaoxiaohai123
  • 2007年05月22日 13:07
  • 1165

ASP.NET导出Excel并将Excel进程关闭 (根据进程ID)

开发工作中经常遇到跟Excel打交道的地方,但在ASP.NET中使用完Excel后往往不能将其关闭,导致服务器上的Excel进程越来越多.本文介绍一个直接将进程KILL的方法,根据进程ID来KILL,...
  • ranbolwb
  • ranbolwb
  • 2012年04月18日 15:46
  • 4230

【转】.NET引用Excel操作时无法关闭Excel.exe进程的解决方法

http://blog.csdn.net/hsyj_0001/article/details/7686364 在使用Office类库Microsoft.Office.Interop.Excel导入导出...
  • zslefour
  • zslefour
  • 2014年03月23日 21:01
  • 2471

VB之操作excel后不能关闭excel进程的原因及解决方法

一、问题: 使用如下代码打开、取值及关闭excel: Public Function ImportFromExcel(excelFile As String) As Long Dim xlApp A...
  • u014369410
  • u014369410
  • 2015年05月11日 16:18
  • 2819

ASP.NET操作EXCEL的总结篇

http://www.jb51.net/article/26273.htm 今年有个系统的部分EXCEL的操作也让我做,顺便结合之前操作EXCEL的经验作一下总结,可能也算不上什么,对于绝大多数来...
  • a364416036
  • a364416036
  • 2016年07月29日 09:19
  • 1269

用完Excel组件后 如何彻底关闭Excel进程

现在流传最多的关闭Excel进程的代码就是下面这几行了. 1System.Runtime.InteropServices.Marshal.ReleaseComObject(r); 2S...
  • wyzlwyzl
  • wyzlwyzl
  • 2014年03月18日 14:49
  • 2593

Asp.Net操作Excel的几种方法

我们在做excel资料的时候,通常有以下方法。 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上。 代码 public static s...
  • chenguang79
  • chenguang79
  • 2014年02月24日 16:46
  • 1849

Asp.net操作Excel常用方法及属性

// 设置单元格格式为文本 range.NumberFormatLocal = "@"; // 获取Excel多个单元格区域:本例做为Excel表头 range = (Range)work...
  • mh942408056
  • mh942408056
  • 2014年07月25日 10:44
  • 2388

asp.net读取Excel文件的两种方法,NPOI方法

第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(st...
  • lybwwp
  • lybwwp
  • 2014年02月28日 14:28
  • 21074
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在asp.net中操作excel如何关闭excel的进程
举报原因:
原因补充:

(最多只允许输入30个字)