亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Excel 互操作應用程序與 Office 2016 的問題

Excel 互操作應用程序與 Office 2016 的問題

C#
Cats萌萌 2023-09-09 16:11:11
我在使用使用 Excel 互操作的應用程序時遇到問題。在 Excel 2010 和 2013 中,它工作得非常好。不幸的是,現在我的同事已經升級到 Office 2016,它不再適用。我也將很快升級,需要找到解決方案。正在做什么?單擊事件會觸發后臺工作人員...private void btnPrep_Click(object sender, EventArgs e){    lblWorking.Visible = true;    pBar1.Visible = true;    //...    //...    bwPrep.RunWorkerAsync(args);}...依次調用方法“Xls2Xml”...private void bwPrep_DoWork(object sender, DoWorkEventArgs e){    //...    //...    foreach (var x in y)    {        var fils = di.GetFiles();        if (fils.Any(f => f.Name.Contains(".xls")))         {            bwPrep.ReportProgress(0, lang);            Xls2Xml(fils.First(f => f.Name.Contains(".xls")).FullName, dest);        }       }}...我在其中使用互操作:private void Xls2Xml(string xlsPath, string destination){    var pfad = xlsPath;    var xlapp = new XL.Application();    var wbooks = xlapp.Workbooks;    var wb = wbooks.Open(pfad);    var sheets = wb.Sheets;    XL.Worksheet sheet = sheets[1];    //...    //...    Marshal.ReleaseComObject(sheet);    Marshal.ReleaseComObject(sheets);    Marshal.ReleaseComObject(wb);    Marshal.ReleaseComObject(wbooks);    Marshal.ReleaseComObject(xlapp);}這適用于 Excel 2010 和 2013。Excel 2016 會導致 COM 錯誤。首先,它是 RPC_E_SERVERCALL_RETRYLATER(“應用程序繁忙”)。谷歌搜索建議我在調用后臺工作人員之前添加此行:System.Threading.SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());這樣做的目的是將產生的錯誤更改為“調用被被調用者拒絕”(RPC_E_CALL_REJECTED)。我確保引用了正確版本的 Excel 互操作和 Office 庫 (1.9 / 16)。錯誤發生在行 上var xlapp = new XL.Application();,在此行之前沒有創建 Excel 應用程序的其他實例。Excel已正確安裝并激活,修復安裝也沒有解決問題。你們中有人遇到過類似的問題嗎?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

解決了。

事實證明,我的同事很容易忘記提及這一點,因為他完全忘記了:罪魁禍首是Kutools插件。

盡管它是之前安裝的并且當時沒有引起問題,但最新的 Office 更新之一肯定改變了某些行為。只需停用 Kutools 即可。


查看完整回答
反對 回復 2023-09-09
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號