当前位置: 代码迷 >> ASP.NET >> c# 调用excle 异常 HRESULT: 0x800A03EC 怎么解决
  详细解决方案

c# 调用excle 异常 HRESULT: 0x800A03EC 怎么解决

热度:9476   发布时间:2013-02-25 00:00:00.0
c# 调用excle 错误 HRESULT: 0x800A03EC 如何解决
源码信息:
 protected void Button1_Click(object sender, EventArgs e)
  {
  Microsoft.Office.Interop.Excel.ApplicationClass myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
  if (myExcel == null)
  {
  Response.Write("无法创建Excel对象,可能您的电脑未安装Excel!");

  }
   
  Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();

  //新建工作簿

  Microsoft.Office.Interop.Excel.Workbook workBook = excelApp.Workbooks.Add(true);

  //新建工作表

  Microsoft.Office.Interop.Excel.Worksheet ws = workBook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
  Object missing = System.Reflection.Missing.Value;
//try
//{
  ws.SaveAs("c:\\temp.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing);
//}
//catch(Exception ex)
//{
//System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture;

//Response.Write(ex.Message+"********"+ci.Name.ToString());
//}
  ws.get_Range(ws.Cells[1, 1], ws.Cells[1, 3]).Value2 = "sssss";

  //ws.Quit();
  }








错误信息:

Exception from HRESULT: 0x800A03EC 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC

源错误: 


行 41: //try
行 42: //{
行 43: ws.SaveAs("c:\\temp.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing);
行 44: //}
行 45: //catch(Exception ex)
 

[COMException (0x800a03ec): Exception from HRESULT: 0x800A03EC]
  Microsoft.Office.Interop.Excel._Worksheet.SaveAs(String Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local) +0
  NewExcle.Button1_Click(Object sender, EventArgs e) in d:\Downloads\WebSite1\NewExcle.aspx.cs:43
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +115
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981


------解决方案--------------------------------------------------------
顶,每天回帖即可获得10分可用分
------解决方案--------------------------------------------------------
你这个代码看着有点晕 
给你个Excel导入导出的类 
参考看看http://blog.csdn.net/xuenzhen123/archive/2009/10/22/4713019.aspx
------解决方案--------------------------------------------------------
当EXCEL单元格处于编辑状态时,往单元格赋值会出现 HRESULT: 0x800A03EC 错误,原因是编辑时,EXCEL很多功能被禁用。

如何解决这个问题

方法1:赋值之前,将EXCLE文件保存一下

Excel.Worksheet ws;//excel工作薄中的工作表

Object missing = System.Reflection.Missing.Value;
ws.SaveAs("c:\\temp.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing);

ws[3,4]="test";

方法2: 

Excel中,如何在cell处于编辑状态时,对其用代码赋值

当我们用Winform程序去自动化Excel的时候,常常要实现这样的功能,给一个cell赋值,貌似很简单,得到range以后,设置它的Value2属性就可以了。但是还是会存在一个小问题,当你要赋值的cell正处于编辑状态的时候,针对该cell的所有代码将被忽略,赋值失败。(如当A1格处于编辑状态时,用代码对A1赋值将没有任何效果)

所以如何判断Excel是否处于编辑状态,成为解决这个问题的关键。很多人都曾试图找一个事件能在Excel进入编辑状态的时候触发,让程序能够得到通知。但是Excel至少可以通过四种方法进入编辑状态:
  相关解决方案