使用Excel互操作在工作簿中列出指定的表名

本文关键字:互操作 Excel 工作簿 使用 | 更新日期: 2023-09-27 18:29:22

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

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

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

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

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

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

这两个都没有按指定的名称列出表。它们只按工作表名称列出表。我希望我已经把这个问题说得足够清楚了,但如果需要的话,我可以提供一个例子。

使用Excel互操作在工作簿中列出指定的表名

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

您要查找的是Worksheet上的ListObjects。ListObject附带了一个Range对象,您可以使用它来计算名称。DisplayName可能也会返回名称——我不确定。