Einführung in Formeln
Aspose.Tasks for .NET API unterstützt das Lesen und Schreiben von Formeln in Microsoft Project (MPP)-Dateien.
Formeln werden verwendet, um benutzerdefinierte Werte für Vorgänge, Ressourcen und Projektfelder basierend auf vorhandenen Projektdaten zu berechnen.
Die Formula property of the ExtendedAttributeDefinition
class stellt eine Schnittstelle zum Zuweisen und Lesen von Formeln bereit.
Wenn eine ungültige Formelzeichenfolge zugewiesen wird, wird eine FormatException
ausgelöst.
Diese Seite bietet eine Einführung in die in Formeln verwendete Grammatik, unterstützte Operatoren, Funktionen und Beispiele.
Formelgrammatik
Microsoft Project verwendet die folgende Grammatik für Formeln, der auch Aspose.Tasks folgt:
1 Formula -> Formula Binary_Op Primary | Primary
2 Primary -> (Formula) | Unary_Op Primary | Function | ValidFieldName | ValidDoubleValue | "StringLiteral"
3 Function -> ValidFunctionName(Args)
4 Args -> Args Delimiter Formula | Formula | |
5 Delimiter -> , | ; // Note: Delimiter is culture-specific in XML format ( , or ; ) and persistent in MPP ( , )
6 Binary_Op -> + | - | * | / | & | MOD | ^ | = | <> | < | > | AND | OR
7 Unary_Op -> NOT | + | -
Unterstützte Elemente
1. Felder
Sie können jeden gültigen Microsoft Project-Feldnamen verwenden (z. B., [Duration]
, [Actual Duration]
, [Standard Rate]
).
2. Operatoren
Formeln unterstützen:
- Arithmetische Operatoren:
+
,-
,*
,/
,MOD
,^
- Vergleichsoperatoren:
=
,<>
,<
,>
- Logische Operatoren:
AND
,OR
,NOT
- String-Verkettung:
&
3. Funktionen
Die meisten standardmäßigen Microsoft Project-Funktionen werden unterstützt, einschließlich:
- Datums- und Zeitfunktionen (z. B.,
DateDiff
,Now
) - Mathematische Funktionen (z. B.,
Round
,Abs
,IIf
) - String-Funktionen (z. B.,
Len
,Instr
,Left
,Right
)
Beispiele
Beispiel 1: Einfache Arithmetik
1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2 CustomFieldType.Number,
3 ExtendedAttributeTask.Number1,
4 "WorkPerDay");
5
6attr.Formula = "[Work] / [Duration]";
Diese Formel berechnet die durchschnittliche Arbeit pro Tag für einen Vorgang.
Beispiel 2: Bedingter Ausdruck
1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2 CustomFieldType.Text,
3 ExtendedAttributeTask.Text1,
4 "TaskStatus");
5
6attr.Formula = "IIf([% Complete] = 100, \"Done\", \"In Progress\")";
Diese Formel setzt den Wert des benutzerdefinierten Feldes auf “Fertig” wenn der Vorgang abgeschlossen ist, andernfalls auf “In Bearbeitung”.
Fehlerbehandlung
- Wenn eine Formel syntaktisch inkorrekt, eine
FormatException
wird beim Zuweisen ausgelöst. - Wenn eine Formel sich auf ein nicht vorhandenes Feld oder eine nicht vorhandene Funktion, kann dies während der Berechnung einen Fehler verursachen.
- Kulturspezifische Trennzeichen (
;
vs,
) sollten beim Arbeiten mit XML-Projektdateien berücksichtigt werden. In MPP-Dateien, ist der Trenner immer ein Komma,
.