[英]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.