0

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

该电子表格有一些图表选项卡,显然不能转换为工作表。因此,当我运行此代码时,出现上述错误:

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

}

我环顾四周寻找解决方案,一些人遇到了它 - 在不同的情况下对我来说,例如: 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 对象模型中是否有一些方法或属性可以告诉您工作表是否不是真正的工作表?

4

1 回答 1

4

关于什么:

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
}

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

于 2012-05-25T04:47:34.100 回答