2011-10-05 46 views
8

SO! :)简单的问题 - 这可能是问,但我找不到它。 我正在使用Open XML SDK和C#从XLSX检索数据。 我想要得到的“第一次”片(如你在Excel中看到的第一个),但是当我使用...如何使用C#和SDK获取OOXML中的“第一”表单?

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

不幸的是,在一个全新的XLSX这个拉“工作表Sheet”而不是“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 

回答

13

据我所知,是这样的:

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

应返回第一张工作表。至少在我的经验中,工作簿表单子孙总是应该根据他们在工作簿中出现的顺序进行排序。

如果你希望得到第一个可见,使用:

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