Récupérer une liste des feuilles de calcul masquées dans un document de feuille de calcul
Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin de récupérer par programmation une liste de feuilles de calcul masquées dans un classeur Microsoft Excel, sans charger le document dans Excel. Il contient un exemple GetHiddenSheets
de méthode pour illustrer cette tâche.
Méthode GetHiddenSheets
Vous pouvez utiliser la GetHiddenSheets
méthode pour récupérer une liste des feuilles de calcul masquées dans un classeur. La GetHiddenSheets
méthode accepte un paramètre unique, une chaîne qui indique le chemin du fichier que vous souhaitez examiner. La méthode fonctionne avec le classeur que vous spécifiez, en remplissant un List<T> instance avec une référence à chaque objet masquéSheet
.
Récupérer la collection de feuilles de calcul
La WorkbookPart
classe fournit une Workbook
propriété, qui à son tour contient le contenu XML du classeur. Bien que le Kit de développement logiciel (SDK) Open XML fournisse la Sheets
propriété , qui retourne une collection de Sheet
composants, toutes les informations dont vous avez besoin sont fournies par les Sheet
éléments du Workbook
contenu XML.
Le code suivant utilise la Descendants
méthode générique de l’objet Workbook
pour récupérer une collection d’objets qui contiennent des Sheet
informations sur tous les éléments enfants de feuille du contenu XML du classeur.
WorkbookPart? wbPart = document.WorkbookPart;
if (wbPart is not null)
{
var sheets = wbPart.Workbook.Descendants<Sheet>();
Récupérer des feuilles masquées
Il est important de savoir qu’Excel prend en charge deux niveaux de feuilles de calcul. Vous pouvez masquer une feuille de calcul en utilisant l'interface utilisateur d'Excel en cliquant avec le bouton droit sur l'onglet des feuilles de calcul et en choisissant de masquer la feuille.
Pour ces feuilles de calcul, la State
propriété de l’objet Sheet
contient une valeur énumérée de Hidden
. Vous pouvez également rendre une feuille de calcul très masquée en écrivant du code (en VBA ou dans un autre langage) qui définit la propriété de Visible
la feuille sur la valeur xlSheetVeryHidden
énumérée . Pour les feuilles de calcul masquées de cette manière, la State
propriété de l’objet Sheet
contient la valeur VeryHidden
énumérée .
Étant donné la collection qui contient des informations sur toutes les feuilles, le code suivant utilise la Where fonction pour filtrer la collection afin qu’elle contienne uniquement les feuilles dans lesquelles la State
propriété n’est pas null. Si la State
propriété n’est pas null, le code recherche les Sheet
objets dans lesquels la State
propriété est une valeur et où la valeur est ou SheetStateValues.Hidden
SheetStateValues.VeryHidden
.
var hiddenSheets = sheets.Where((item) => item.State is not null &&
item.State.HasValue &&
(item.State.Value == SheetStateValues.Hidden ||
item.State.Value == SheetStateValues.VeryHidden));
Exemple de code
Voici l’exemple de code complet GetHiddenSheets
en C# et Visual Basic.
static List<Sheet> GetHiddenSheets(string fileName)
{
List<Sheet> returnVal = new List<Sheet>();
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))
{
WorkbookPart? wbPart = document.WorkbookPart;
if (wbPart is not null)
{
var sheets = wbPart.Workbook.Descendants<Sheet>();
// Look for sheets where there is a State attribute defined,
// where the State has a value,
// and where the value is either Hidden or VeryHidden.
var hiddenSheets = sheets.Where((item) => item.State is not null &&
item.State.HasValue &&
(item.State.Value == SheetStateValues.Hidden ||
item.State.Value == SheetStateValues.VeryHidden));
returnVal = hiddenSheets.ToList();
}
}
return returnVal;
}