2011-10-05 9 views
8

SO! :) Basit soru - muhtemelen sorulmuştur, ama bulamadım. Açık XML SDK ve C# kullanarak XLSX'ten veri alıyorum. Ben kullandığınızda ben yepyeni XLSX bu "Sheet3" çekti, maalesef ...OOXML'de 'ilk' sayfayı C# ve SDK ile nasıl edinebilirim?

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

(Excel'de görürdünüz ilki olduğu gibi) "ilk" sayfasını almak istiyorum ama "Sheet1" yerine. Sayfa adını önceden bilmiyorum ya da kullanıcıyı yalnızca bir sayfa içeren bir çalışma kitabı göndermeye veya sayfa adı belirtmeye zorlayamam. Şimdiki şartım ilk sayfayı ele geçirmek.

Birisi yardım edebilir mi? :)

DÜZENLEME: Bunu çözdüm! Ama ... 7 saat boyunca kendi soruya cevap, bu yüzden olamaz

bu diğer SO soru üzerine cevapların tamamını kazma ile bulduğumuz

: Özünde

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

, bir çalışma örneği olabilir Bu be:

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

cevap

13

olarak bildiğim kadarıyla, bir şey gibi:

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

İlk çalışma sayfasını döndürmeli. Çalışma Kitabı'nın soyundan gelenler her zaman çalışma kitabında göründükleri sıraya göre, en azından benim deneyimime göre sıralanmalıdır.

ilk görünür, kullanıma almak istediğinizde:

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