Arbeiten mit der Berechnungskette
In diesem Thema wird die CalculationChain-Klasse des Open XML SDK und ihre Beziehung zum SpreadsheetML-Schema des Open XML-Dateiformats erläutert. Weitere Informationen zur Gesamtstruktur der Teile und Elemente, aus denen ein SpreadsheetML-Dokument besteht, finden Sie unter Struktur eines SpreadsheetML-Dokuments.
Berechnungskette (CalculationChain) in SpreadsheetML
Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 führen das CalculationChain-Element (<calcChain>) ein.
Eine Instanz dieses Teiltyps enthält eine geordnete Gruppe von Verweisen auf alle Zellen in allen Arbeitsblättern in der Arbeitsmappe, deren Wert anhand einer beliebigen Formel verwendet wird. Die Anordnung erlaubt zusammenhängenden Zellenformeln die Berechnung in der ordnungsgemäßen Reihenfolge, wenn ein Arbeitsblatt geladen wird.
Ein Paket darf nicht mehr als einen Berechnungskettenteil enthalten.
The root element for a part of this content type shall be calcChain.
Der Teil Berechnungskette gibt die Reihenfolge an, in der Zellen in der Arbeitsmappe zuletzt berechnet wurden. Es zeichnet nur Informationen zu Zellen auf, die Formeln enthalten. Sie enthält keine Informationen zur Formelabhängigkeitsberechnungsstruktur. Anders ausgedrückt: Der Teil Berechnungskette gibt nicht die Abhängigkeiten an, die Formeln von anderen Zellwerten haben. Es gibt nur die Reihenfolge an, in der die Zellen zuletzt berechnet wurden.
Ein beliebiges Berechnungsereignis kann bewirken, dass die Berechnungskette neu angeordnet oder geändert wird. Beim Hinzufügen weiterer Formeln zur Arbeitsmappe werden dem Berechnungskettenteil beispielsweise weitere Verweise hinzugefügt.
Ein weiteres Beispiel der Änderung der Berechnungsreihenfolge bezieht sich auf die Teilberechnung. Eine Teilberechnung ist eine Optimierung, die eine Tabellenkalkulationsanwendung zum Berechnen nur derjenigen Zellen implementieren kann, die von anderen Zellen abhängen, deren Werte sich geändert haben, wobei andere Formeln in der Arbeitsmappe ignoriert werden. Dies dient zum Vermeiden überflüssiger Berechnungen von Ergebnissen, die bereits bekannt sind. Wenn demnach eine Gruppe von Formeln, die zuvor bei einer Berechnung ignoriert wurden, aufgrund eines geänderten Zellenwerts berechnet werden muss, werden diese Formeln an die erste Stelle der Berechnungskette verschoben, damit sie ausgewertet werden können.
Wenngleich Berechtigungsketteninformationen durch eine Tabellenkalkulationsanwendung geladen werden können, ist dies nicht erforderlich. Eine Berechnungskette kann speicherintern zum Ladezeitpunkt basierend auf den Formeln und ihrer gegenseitigen Abhängigkeit erstellt werden, wenn die Anwendung diese Informationen als nützlich erachtet. Die im Berechtigungskettenteil ausgedrückte Reihenfolge gibt der implementierenden Anwendung nicht die Reihenfolge vor, in der Berechnungen zur Laufzeit erfolgen müssen.
© ISO/IEC29500: 2008.
In der folgenden Tabelle sind die allgemeinen Open XML SDK-Klassen aufgeführt, die beim Arbeiten mit der CalculationChain-Klasse verwendet werden.
SpreadsheetML-Element | Open XML SDK-Klasse |
---|---|
c | CalculationCell |
Open XML SDK CalculationChain-Klasse
DieCalculationChain-Klasse des Open XML SDK stellt das Absatzelement (<calcChain>) dar, das im Open XML-Dateiformatschema für SpreadsheetML-Dokumente definiert ist. Verwenden Sie die CalculationChain-Klasse , um einzelne <calcChain-Elemente> in einem SpreadsheetML-Dokument zu bearbeiten.
CalculationCell-Klasse
Die CalculationCell-Klasse stellt das Zellenelement (<si>) dar, das eine Zelle darstellt, die eine Formel enthält.
Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 stellen das CalculationCell (<c>)-Element vor.
Every c element represents a cell containing a formula. The first cell calculated appears first (top-tobottom), and so on. The reference attribute r indicates the cell's address in the sheet. The index attribute i indicates the index of the sheet with which that cell is associated.
© ISO/IEC29500: 2008.
Spreadsheetml
Die folgenden Informationen aus der Spezifikation ISO/IEC 29500 enthalten den XML-Code einer Beispielberechnungskette, nachdem die Anwendung die erste vollständige Berechnung ausgeführt hat.
<calcChain xmlns="…">
<c r="B2" i="1"/>
<c r="B3" s="1"/>
<c r="B4" s="1"/>
<c r="B5" s="1"/>
<c r="B6" s="1"/>
<c r="B7" s="1"/>
<c r="B8" s="1"/>
<c r="B9" s="1"/>
<c r="B10" s="1"/>
<c r="C10" s="1"/>
<c r="D10" s="1"/>
<c r="A2"/>
<c r="A3" s="1"/>
<c r="A4" s="1"/>
<c r="A5" s="1"/>
<c r="A6" s="1"/>
<c r="A7" s="1"/>
<c r="A8" s="1"/>
<c r="A9" s="1"/>
<c r="A10" s="1"/>
</calcChain>