使用Excel互操作在Workbook中列出已分配的表名

时间:2012-03-29 20:47:41

标签: c# com interop excel

我有一个Excel工作簿,里面有几个工作表。已使用Excel中的名称管理器为工作表中的表分配了名称。有没有办法获取这些表名的列表,而不是工作表名称?

例如,将工作簿定义为Microsoft.Office.Interop.Excel.Workbook:

var names = (workbook.Names as System.Collections.IEnumerable).Cast<Name>();

返回工作簿中已定义的名称范围列表。此外:

var worksheets = workbook.Worksheets.Cast<Worksheet>();

返回工作簿中的工作表列表,其名称与工作表的选项卡名称相同。

这些都没有按照指定的名称列出表格。它们仅按工作表名称列出表。我希望我的问题足够清楚,但如果需要,我可以提供一个例子。

1 个答案:

答案 0 :(得分:2)

由于历史原因,Excel中的表格在OM中称为列表。

您正在寻找ListObjects上的Worksheet。 ListObject附加了一个Range对象,您可以使用它来确定名称。 DisplayName也可能会返回名称 - 我不确定。