interop - 检查excel中是否存在工作表

标签 interop excel-2007

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

    Worksheet sheet = null;
    Sheets worksheets = some;

    sheet = (Worksheet)worksheets.get_Item("sheetName");
    if(sheet!=null)
{
//do something
}

编辑:

感谢您的输入。

我写了一个函数
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;
}

我使用它如下
 Dictionary<string, Worksheet> sheetMap = GetSheetsMap(worksheets);
            Worksheet sheet = null;


            if (sheetMap.TryGetValue(ExtendedTemplateManager.BasicUserTemplate, out sheet))
            {
                //found it.
            }
else
{
// not
}

最佳答案

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

foreach (Sheet sheet in workbook.Sheets)
{
    if (sheet.Name.equals("sheetName"))
    {
        //do something
    }
}

关于interop - 检查excel中是否存在工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722719/

相关文章:

c# - 平台调用、 bool 值和字符串

c# - 客户端请求中的 SAML token 后需要签名

java - Seam 与哪些版本的 GWT 一起工作?

excel - 使用 Excel 工作表作为模板与 OpenXML 中的 "real"Excel 模板

xml - 将 excel 导出到带有空白单元格的 xml 电子表格

c++ - 如何在 Excel 2007 中获取最后一个事件单元格

c# - AccessViolationException 在 Outlook 2007 中读取电子邮件发件人

C#:MS Excel 中复选框的状态

excel - 为什么 isError( ) 不能与 Excel VBA 中的 vlookup 语句一起使用

excel - 从单个单元格中的多个值创建矩阵