当前位置:编程学习 > C#/ASP.NET >>

C#调用excel报错“被呼叫方拒绝接收呼叫”

我引用的是 Microsoft Excel 11.0 Object Library 

Excel.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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,