2011-10-05 5 views
8

그래! :) 간단한 질문 - 아마 물었지만, 그것을 찾을 수 없습니다. Open XML SDK와 C#을 사용하여 XLSX에서 데이터를 가져옵니다. 내가 사용하는 경우 나는 아주 새로운 XLSX이가 "Sheet3에"를 뽑아, 불행하게도 ...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; 

을 (Excel에서 볼 것이다 처음처럼) "첫 번째"시트 싶어하지만, "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); 
관련 문제