簡體   English   中英

使用Open XML讀取Excel電子表格時,如何確定表格所在的工作表?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM