excel互操作异常0x8002000B

时间:2013-07-11 12:30:53

标签: c# .net excel office-interop

我有以下代码来打开工作簿并只保留一个工作表:

//Get a new workbook.
oWB = app.Workbooks.Add(Missing.Value);

int len = oWB.Sheets.Count;

for (int i = 1; i < len; i++)
{
    ((Worksheet)oWB.Sheets[i]).Delete();
}

oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.ActiveSheet;

此代码已在许多客户端配置中使用多年。

出于某种原因,我有一个使用excel 2013(希伯来语)的客户,并且在他的机器上我得到以下例外:

System.Runtime.InteropServices.COMException (0x8002000B): Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
   at Microsoft.Office.Interop.Excel.Sheets.get__Default(Object Index)
   at IOSIGHT.Win.ActiveReports.ExcelHelper.StartExcel()

如果我了解情况,似乎由于某种原因,工作簿没有纸张, 因此,调用oWb.ActiveSheet会引发异常。 知道是什么导致了这个吗?

是的,我在同一个异常中看到了其他帖子,但我的代码与他们的场景不符。

谢谢你的帮助, 奥马尔

1 个答案:

答案 0 :(得分:3)

向后循环,因此您不要尝试删除不再存在的索引。

E.g for (int i = len; i > 1; i--) ...

相关问题