检查excel中是否存在工作表

ps.*_*ps. 4 interop excel-2007

如何使用互操作检查Excel中是否存在工作表.我尝试了以下但是如果不存在则抛出一个COMException ..是否有更好的方法来查找而不是实际查看异常

    Worksheet sheet = null;
    Sheets worksheets = some;

    sheet = (Worksheet)worksheets.get_Item("sheetName");
    if(sheet!=null)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)

编辑:

感谢输入的人.

我写了一个函数

private Dictionary<string, Worksheet> GetSheetsMap(Sheets worksheets)
{

    if (worksheets == null)
        throw new ArgumentNullException("worksheets");


    Dictionary<string, Worksheet> map = new Dictionary<string, Worksheet>(StringComparer.CurrentCultureIgnoreCase);
    foreach (Worksheet s in worksheets)
    {
        map.Add(s.Name, s);
    }

    return map;
}
Run Code Online (Sandbox Code Playgroud)

我用它如下

 Dictionary<string, Worksheet> sheetMap = GetSheetsMap(worksheets);
            Worksheet sheet = null;


            if (sheetMap.TryGetValue(ExtendedTemplateManager.BasicUserTemplate, out sheet))
            {
                //found it.
            }
else
{
// not
}
Run Code Online (Sandbox Code Playgroud)

bry*_*esk 11

你有一个Workbook对象吗?如果是这样,您可以遍历Workbook.Sheets数组并检查每个Sheet的Name属性.

foreach (Sheet sheet in workbook.Sheets)
{
    if (sheet.Name.equals("sheetName"))
    {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)