Bagaimana cara mendapatkan lembar 'pertama' di OOXML dengan C# dan SDK?

JADI! :) Pertanyaan sederhana -- mungkin sudah ditanyakan, tetapi saya tidak dapat menemukannya. Saya mengambil data dari XLSX menggunakan Open XML SDK dan C#. Saya ingin mendapatkan lembar "pertama" (seperti lembar pertama yang Anda lihat di Excel), tetapi ketika saya menggunakan...

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

Sayangnya, di XLSX baru ini menarik "Sheet3" dan bukan "Sheet1". Saya tidak mengetahui nama lembar sebelumnya dan saya juga tidak dapat memaksa pengguna untuk mengirimkan buku kerja hanya dengan satu lembar atau menentukan nama lembar. Persyaratan saya saat ini adalah mengambil lembar pertama.

Dapatkah seseorang tolong bantu? :)

EDIT: Saya menemukan jawabannya! Tapi saya tidak bisa menjawab pertanyaan saya sendiri selama 7 jam, jadi...

Saya menemukan ini dengan menggali jawaban atas pertanyaan SO lainnya:

Buka XML SDK 2.0 - caranya cara memperbarui sel di spreadsheet?

Intinya, contoh kerjanya mungkin seperti ini:

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

person aikeru    schedule 05.10.2011    source sumber


Jawaban (1)


Sejauh yang saya tahu, sesuatu seperti:

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

Harus mengembalikan lembar kerja pertama. Keturunan Lembar buku kerja harus selalu diurutkan berdasarkan urutan kemunculannya di buku kerja, setidaknya menurut pengalaman saya.

Jika Anda ingin mendapatkan tampilan pertama, gunakan:

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