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
答案 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);