使用Open XML读取Excel电子表格,如何确定表格所在的工作表?

时间:2016-04-19 15:15:39

标签: c# excel openxml

如果我有一个加载的SpreadsheetDocument实例:

SpreadsheetDocument spreadsheetDocument

并遍历WorksheetParts:

foreach (var wp in spreadsheetDocument.WorkbookPart.WorksheetParts)

表示每个部分是"表"我可以通过以下方式获得表定义:

wp.TableDefinitionParts

抓住第一个条目。此时我可以抓住表名:

var tableName = tableDefinitionPart.Table.Name;

但是如何确定此表所在的工作表?

1 个答案:

答案 0 :(得分:0)

给定WorksheetPart(在代码中分配给wp),第一个条目Parts列表将是Packaging.IdPartPair对象:

var parts = wp.Parts.ToList();
var idPartPair = parts[0];

如果你看一下

的值
idPartPair.OpenXmlPart.Uri.OriginalString

它将是一个如下所示的字符串:

/xl/tables/table2.xml

您唯一关心的是该字符串中的数字2。信不信由你,实际上是说该表位于工作簿的第三张表中(从零开始)

此时,编写您喜欢的代码以提取上述代码中的2个。我的版本就是这个,但我相信其他人可以缩短它:

var sheetNo = int.Parse(string.Concat(Path.GetFileNameWithoutExtension(idPartPair.OpenXmlPart.Uri.OriginalString).Skip(5)));

接下来,获取表单列表:

var sheets = spreadsheetDocument.WorkbookPart.Workbook.Sheets.ToList();

然后使用sheetNo为其编入索引:

var sheet = (Sheet)sheets[sheetNo];

然后您可以轻松获取工作表名称:

var sheetName = sheet.Name;