@@ -415,6 +415,53 @@ public void SetSheetVisibility(string sheetName, SheetVisibility visibility)
415
415
throw new ArgumentException ( $ "Sheet '{ sheetName } ' not found in the workbook.") ;
416
416
}
417
417
}
418
+
419
+ /// <summary>
420
+ /// Retrieves a list of hidden or very hidden sheets from the workbook.
421
+ /// </summary>
422
+ /// <returns>A list of tuples where each tuple contains the sheet ID and sheet name for hidden sheets.</returns>
423
+ /// <exception cref="InvalidOperationException">Thrown when the workbook part is not initialized.</exception>
424
+ /// <exception cref="ArgumentNullException">Thrown when a sheet's ID or Name is null.</exception>
425
+ public List < Tuple < string , string > > GetHiddenSheets ( )
426
+ {
427
+ if ( workbookpart is null )
428
+ throw new InvalidOperationException ( "WorkbookPart is not initialized." ) ;
429
+
430
+ List < Tuple < string , string > > returnVal = new List < Tuple < string , string > > ( ) ;
431
+
432
+ // Retrieves all sheets in the workbook.
433
+ // Reference: DocumentFormat.OpenXml.Spreadsheet.Sheet
434
+ var sheets = workbookpart . Workbook . Descendants < Sheet > ( ) ;
435
+
436
+ // Look for sheets where there is a State attribute defined,
437
+ // where the State has a value,
438
+ // and where the value is either Hidden or VeryHidden.
439
+ // Reference: DocumentFormat.OpenXml.Spreadsheet.SheetStateValues
440
+ var hiddenSheets = sheets . Where ( item => item . State is not null &&
441
+ item . State . HasValue &&
442
+ ( item . State . Value == SheetStateValues . Hidden ||
443
+ item . State . Value == SheetStateValues . VeryHidden ) ) ;
444
+
445
+ // Populate the return list with the sheet ID and name as tuples.
446
+ foreach ( var sheet in hiddenSheets )
447
+ {
448
+ // Check if sheet ID or Name is null
449
+ if ( sheet . Id is null )
450
+ throw new ArgumentNullException ( nameof ( sheet . Id ) , "Sheet ID cannot be null." ) ;
451
+
452
+ if ( sheet . Name is null )
453
+ throw new ArgumentNullException ( nameof ( sheet . Name ) , "Sheet Name cannot be null." ) ;
454
+
455
+ returnVal . Add ( new Tuple < string , string > (
456
+ sheet . Id , // The ID of the sheet, typically used to reference the sheet in the workbook.
457
+ sheet . Name // The name of the sheet as displayed in the workbook.
458
+ ) ) ;
459
+ }
460
+
461
+ return returnVal ;
462
+ }
463
+
464
+
418
465
419
466
/// <summary>
420
467
/// Retrieves a list of hidden or very hidden sheets from the workbook.
0 commit comments