Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird gezeigt, wie Sie die Klassen im Open XML SDK für Office verwenden, um programmgesteuert eine Liste ausgeblendeter Arbeitsblätter in einer Microsoft Excel-Arbeitsmappe abzurufen, ohne das Dokument in Excel zu laden. Sie enthält eine Beispielmethode GetHiddenSheets
zur Veranschaulichung dieser Aufgabe.
GetHiddenSheets-Methode
Sie können die GetHiddenSheets
-Methode verwenden, um eine Liste der ausgeblendeten Arbeitsblätter in einer Arbeitsmappe abzurufen. Die GetHiddenSheets
-Methode akzeptiert einen einzelnen Parameter, eine Zeichenfolge, die den Pfad der Datei angibt, die Sie untersuchen möchten. Die -Methode funktioniert mit der von Ihnen angegebenen Arbeitsmappe und füllt eine List<T> instance mit einem Verweis auf jedes ausgeblendete Sheet
Objekt.
Abrufen der Auflistung von Arbeitsblättern
Die WorkbookPart
-Klasse stellt eine Workbook
-Eigenschaft bereit, die wiederum den XML-Inhalt der Arbeitsmappe enthält. Obwohl das Open XML SDK die Sheets
-Eigenschaft bereitstellt, die eine Auflistung der Sheet
Teile zurückgibt, werden alle benötigten Informationen von den Sheet
Elementen innerhalb des Workbook
XML-Inhalts bereitgestellt.
Im folgenden Code wird die Descendants
generische -Methode des Workbook
-Objekts verwendet, um eine Auflistung von Sheet
-Objekten abzurufen, die Informationen zu allen untergeordneten Blattelementen des XML-Inhalts der Arbeitsmappe enthalten.
WorkbookPart? wbPart = document.WorkbookPart;
if (wbPart is not null)
{
var sheets = wbPart.Workbook.Descendants<Sheet>();
Abrufen ausgeblendeter Blätter
Es ist wichtig zu beachten, dass Excel zwei Arbeitsblattebenen unterstützt. You can hide a worksheet by using the Excel user interface by right-clicking the worksheets tab and opting to hide the worksheet.
Für diese Arbeitsblätter enthält die State
-Eigenschaft des Sheet
-Objekts den aufgezählten Wert .Hidden
Sie können ein Arbeitsblatt auch sehr ausgeblendet machen, indem Sie Code (entweder in VBA oder in einer anderen Sprache) schreiben, der die Eigenschaft des Blatts Visible
auf den enumerationierten Wert xlSheetVeryHidden
festlegt. Bei Arbeitsblättern, die auf diese Weise ausgeblendet werden, enthält die State
-Eigenschaft des Sheet
-Objekts den aufgezählten Wert VeryHidden
.
Angesichts der Auflistung, die Informationen zu allen Blättern enthält, verwendet der folgende Code die Where -Funktion, um die Auflistung so zu filtern, dass sie nur die Blätter enthält, in denen die State
Eigenschaft nicht NULL ist. Wenn die State
Eigenschaft nicht NULL ist, sucht der Code nach den Sheet
Objekten, in denen die State
-Eigenschaft als Wert und der Wert entweder SheetStateValues.Hidden
oder SheetStateValues.VeryHidden
ist.
var hiddenSheets = sheets.Where((item) => item.State is not null &&
item.State.HasValue &&
(item.State.Value == SheetStateValues.Hidden ||
item.State.Value == SheetStateValues.VeryHidden));
Beispielcode
Im Folgenden finden Sie das vollständige GetHiddenSheets
Codebeispiel in C# und 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;
}