ASP.NET中调用Excel的问题

如果需要在ASP。NET的程序里调用Office的组件,例如Excel,代码写起来并不复杂

首先引用Microsoft.Office.Interop.Excel(注意,必须先装PIAs,可以是OfficeXP的PIAs,但推荐如果是Office 2003的话,就装Office2003PIAs

代码大致如下,看了一些网上的介绍,说是要用System.Runtime.InteropServices.Marshal.ReleaseComObject来显式释放,但测试的结果仍然无效

在VS 2003和VS 2005都是这样的

这个问题咨询了微软的技术支持,最后的结果是不建议用这种服务器端调用Office组件的技术

private void Button2_Click(object sender, System.EventArgs e)
  {
   object missing=Type.Missing;
   Excel.Application app=new Excel.ApplicationClass();
   Excel.Workbook wb=app.Workbooks.Add(missing);
   Excel.Worksheet ws=(Excel.Worksheet)wb.Worksheets.get_Item(1);
   ws.Cells[1,1]="Hey,man!I am here!";
   string fileName=Server.MapPath(@"Test.xls");
   if(System.IO.File.Exists(fileName))
    System.IO.File.Delete(fileName);

wb.Close(true,fileName,missing);
   NAR(ws);
   NAR(wb);
   app.Quit();
   NAR(app);
   GC.Collect();
  }

private void NAR(object o)
  {
   try
   {
    System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
   }
   catch {}
   finally
   {
    o = null;
   }
  }

 

下面是微软工程师的回答

您好 陈希章
我给您试了,确实是有这个问题。
我反复查了相关文档后,发现这个问题是由于Server-Side调用Automation引起的。
这是一个KnowIssue,这种应用是受到Microsoft限制的。
我们不支持和建议使用Server-Side的程序去掉用Automation,因为可能会引起很多问题。
Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when run in this environment.
您可以从以下的KB中看到详细的相关信息
http://support.microsoft.com/kb/257757/
您可能必须更改您的设计来回避这个问题了。
很抱歉,对于这个问题,我们也无法提供给您可用的解决方法。
可能是由于Server-side的程序设计使然,他不同于winform的程序,确实有些类或是组件当在Server-side调用时却是会引起很多的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值