[英]Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT) when opening xlsx file
[英]Function ...Workbooks.Open() is failed while opening .xla and .xla addins of excel through c# - HRESULT: 0x80010105 (RPC_E_SERVERFAULT)
我在 Visual Studio 中的 c# 中編寫了代碼,然后打開 excel,運行宏並關閉 excel 我循環執行(在循環中並在每個循環之間延遲)有時 function 會失敗,有時它會工作
我收到的錯誤消息:“服務器拋出異常。(HRESULT 異常:0x80010105 (RPC_E_SERVERFAULT))”
請問有人可以幫幫我嗎???
public void Open()
{
try
{
ExcelApp.Workbooks.Open(@"C:\Program Files (x86)\REFPROP\REFPROP.XLA");
ExcelApp.Workbooks.Open(@"C:\Program Files (x86)\REFPROP\REFPROP_Ribbon.xlam");
foreach (Excel.AddIn item in ExcelApp.AddIns)
{
if (item.Name.Equals("REFPROP.XLA") || item.Name.Equals("REFPROP_Ribbon.xlam"))
{
item.Installed = false;
item.Installed = true;
}
}
Thread.Sleep(3000);
//so then opening excel workbooks:
ExcelBook = ExcelApp.Workbooks.Open(ExcelPath);
Opened = true;
Thread.Sleep(3000);
ExcelApp.Workbooks.Open(@"C:\Program Files (x86)\REFPROP\REFPROP.XLA");
ExcelApp.Workbooks.Open(@"C:\Program Files (x86)\REFPROP\REFPROP_Ribbon.xlam");
foreach (Excel.AddIn item in ExcelApp.AddIns)
{
if (item.Name.Equals("REFPROP.XLA") || item.Name.Equals("REFPROP_Ribbon.xlam"))
{
item.Installed = false;
item.Installed = true;
}
}
Thread.Sleep(3000);
}
catch (Exception e)
{
throw;
}
}
您在運行時收到該異常的原因可能有多種。
首先,我建議在代碼中釋放底層 COM 對象,不要依賴 GC。 為此使用Marshal.ReleaseComObject
方法,然后將 object 設置為null
。
其次,嘗試將計算模式設置為manual
。
第三,確保該文件不需要管理員權限。
您可能會發現類似的線程有幫助,請參閱Excel interop 服務器拋出異常。 (HRESULT 異常:0x80010105 (RPC_E_SERVERFAULT)) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.