如果我有一个加载的SpreadsheetDocument实例:
SpreadsheetDocument spreadsheetDocument
并遍历WorksheetParts:
foreach (var wp in spreadsheetDocument.WorkbookPart.WorksheetParts)
表示每个部分是"表"我可以通过以下方式获得表定义:
wp.TableDefinitionParts
抓住第一个条目。此时我可以抓住表名:
var tableName = tableDefinitionPart.Table.Name;
但是如何确定此表所在的工作表?
答案 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;