无法转换透明代理键入“Microsoft.Office.Interop.Excel.Worksheet”

迭代电子表格中的所有工作表我遇到了这个错误消息:
无法转换透明代理键入“Microsoft.Office.Interop.Excel.Worksheet”。

这个电子表格有一些图表标签,显然不能被转换为表格。 所以当我运行这个代码时,我得到了上面的错误:

foreach (Microsoft.Office.Interop.Excel.Worksheet activeSheet in xlApp.Sheets) { } 

我环顾四周find一个解决scheme,有几个人遇到了它 – 在不同的场景对我来说,例如: http : //social.msdn.microsoft.com/forums/en-US/vsto/thread/ab2e917a-d3bf- 4e6a-84dc-7f8a9440fe0a

到目前为止,我对解决方法不满意。 我觉得应该例外地使用例外,这不是其中之一:

 for (int i = 0; i < xlApp.Sheets.Count; i++) { try { Worksheet wk = (Worksheet)xlApp.Sheets[i]; } catch (Exception) { //This isn't a sheet - avoid sheet operations } } 

我想知道是否有人知道如何遍历表(跳过非表)而不需要Try-Catch? Excel对象模型中是否有一些方法或属性可以告诉您一个表单是不是一个表单?

关于什么:

 foreach (object possibleSheet in xlApp.Sheets) { Microsoft.Office.Interop.Excel.Worksheet aSheet = possibleSheet as Microsoft.Office.Interop.Excel.Worksheet; if (aSheet == null) continue; // your stuff here } 

当然,只有当您仅为图表选项卡而不是其他工作表获得例外时,它才会起作用。