如何使用C#和SDK获取OOXML中的“第一”表单?

所以! :)简单的问题 – 这可能是问,但我找不到它。 我正在使用Open XML SDK和C#从XLSX中检索数据。 我想获得“第一”表(如第一个你会看到在Excel中),但是当我使用…

WorkbookPart wbPart = workBook.WorkbookPart; //Now let's find the dimension of the first worksheet string sheetArea = wbPart.WorksheetParts.First().Worksheet.SheetDimension.Reference.Value; 

不幸的是,在一个全新的XLSX中,这个“Sheet3”取代了“Sheet1”。 我不能提前知道工作表名称,也不能强制用户仅提交一张工作表或指定工作表名称。 我目前的要求是抓住第一张纸。

有人可以帮忙吗? 🙂

编辑:我想通了! 但我不能回答我自己的问题7个小时,所以…

我通过挖掘其他SO问题的答案find了这个:

Open XML SDK 2.0 – 如何更新电子表格中的单元格?

实质上,一个可行的例子可能是这样的:

 (wbPart.GetPartById(wbPart.Workbook.Sheets.Elements<Sheet>().First().Id.Value) as WorksheetPart).Worksheet.SheetDimension.Reference.Value 

据我所知,像这样的东西:

 Sheet firstSheet = wbPart.Workbook.Descendants<Sheet>().First(); Worksheet firstWorksheet = ((WorksheetPart)wbPart.GetPartById(firstSheet.Id)).Worksheet; 

应该返回第一个工作表。 工作簿工作表子孙总是应该根据他们在工作簿中出现的顺序进行sorting,至less在我的经验中是如此。

如果您希望看到第一个,请使用:

 Sheet firstSheet = wbPart.Workbook.Descendants<Sheet>() .First(s => s.State == SheetStateValues.Visible);