[英]Using Open XML to read an Excel spreadsheet, how do I determine the sheet that a Table is on?
如果我有一个加载的SpreadsheetDocument实例:
SpreadsheetDocument spreadsheetDocument
并遍历WorksheetParts:
foreach (var wp in spreadsheetDocument.WorkbookPart.WorksheetParts)
对于作为“表格”的每个部分,我都可以使用以下方式获得表格定义:
wp.TableDefinitionParts
并抓住第一个条目。 此时,我可以获取表名:
var tableName = tableDefinitionPart.Table.Name;
但是,如何确定此表位于哪张纸上?
给定一个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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.