我正在将现有的C#程序从Excel 2003转换为Excel 2013(Office 365)。它使用excel互操作接口。该应用程序包含自己的Interop.Excel.dll副本(v11.0.8161),即它没有链接到本地计算机上安装的程序集。除了两种方法之外,它在安装了2013的机器上运行正常; Range.Select()和WorkBook.BreakLink()。第一个抛出一个例外" Range类的Select方法失败"第二个"来自HRESULT的异常:0x800A03EC"。用版本15.0.4641(来自Office 2013)替换interop dll没有任何区别,错误仍然存在。代码片段如下;
private Excel.Workbook NewWB;
Excel.Worksheet lastSheet = (Excel.Worksheet)NewWB.Worksheets[NewWB.Worksheets.Count];
((Excel.Range)lastSheet.Cells[1, 1]).Select();
Array links = NewWB.LinkSources(Excel.XlLinkType.xlLinkTypeExcelLinks) as Array;
if (links != null)
foreach (var l in links)
NewWB.BreakLink((string)l, Excel.XlLinkType.xlLinkTypeExcelLinks);
有人知道为什么这两种方法在应用程序工作时会失败;它加载多个工作簿,提取特定的工作表,然后将它们合并到一个新的工作簿?从Microsoft文档中,这些方法仍然像以前一样工作。