C#调用excel报错“被呼叫方拒绝接收呼叫”
我引用的是 Microsoft Excel 11.0 Object LibraryExcel.Application xApp=new Excel.ApplicationClass();
Excel.Workbook xBook=xApp.Workbooks._Open(@"D:\Sample.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets[1];
当运行到第二句的时候报错,请高手帮忙解决,附带vb.net的,情况类似
Try
Dim oExcel As New Application
Dim oBook As Workbook
Dim oSheet As Worksheet
#1 oBook = oExcel.Workbooks.Open("d:\Sample.xls")
oSheet = oBook.Worksheets.Item("result")
oSheet.Activate()
Catch ex As Exception
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
也就是运行到#1处的时候报“被呼叫方拒绝接收呼叫”,不是每次都弹出错误提示的。希望能帮忙解决,谢谢! --------------------编程问答-------------------- 大家没碰到过这种问题吗?帮帮忙啊
--------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 我用的是C# --------------------编程问答-------------------- Excel.Application xApp=new Excel.ApplicationClass();
Excel.Workbooks Books = xApp.Workbooks;
Excel.Workbook xBook=Books._Open(@"D:\Sample.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
试试 --------------------编程问答-------------------- 还是不行啊 --------------------编程问答-------------------- up --------------------编程问答-------------------- 我也遇到了这个问题,不过是在程序操作excel的同时,用户操作其它excel,才会出问题。 --------------------编程问答--------------------
--------------------编程问答-------------------- 是的,无论你怎么用,都会出现这样的问题。
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
xlApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook xlBook;
object m_objOpt = System.Reflection.Missing.Value;
xlBook = xlApp.Workbooks.Open(@"D:\Sample.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlBook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
原因是微软的EXCEL COM对多线程的支持并不是很好,一般来看他只支持单线程,也就是同步的操作。
你出现这个问题,是因为你的程序在执行的时候,调用他的某个比较耗时的操作,他去操作去了,也立即返回了,但是你并不知道他在执行,你开始调用下一个方法,那么他就来不及执行了,就给你返回一个“拒绝被调用”。
你可以试试,你在调试的时候,并不会有这个错误,但是运行exe就出现了,原因就是这个。
你可以选择sleep来减慢你的excel的操作。
刚刚看了你的代码,感觉跟我说的不太一样,你可以试着重新完全的安装一次excel,目前我就重新安装的办法也解决了不少这样的问题,你的这种问题,我就不太清楚了。
补充:.NET技术 , C#