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

时间:2011-10-05 15:23:32

标签: c# xml excel sdk openxml

SO! :)简单的问题 - 它可能被问到,但我找不到它。 我正在使用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问题的答案找到了这个:

Open XML SDK 2.0 - how to update a cell in a spreadsheet?

从本质上讲,一个工作的例子可能就是这样:

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

1 个答案:

答案 0 :(得分:15)

据我所知,像:

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

应该返回第一个工作表。工作簿Sheet后代应始终根据它们在工作簿中的显示顺序进行排序,至少根据我的经验。

如果您希望第一个可见,请使用:

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