Arbeiten mit Projekten
Aspose.Tasks for .NET ermöglicht es Ihnen, mit Microsoft Project (MPP/XML)-Dateien zu arbeiten, ohne dass Microsoft Project installiert sein muss oder auf Microsoft Office Automation zurückgegriffen werden muss. Es bietet eine leistungsstarke und flexible API die Entwicklern hilft, Zeit und Aufwand zu sparen, indem sie eine konsistente Möglichkeit bietet, Projektdaten über verschiedene Formate hinweg zu verarbeiten.
Mit Aspose.Tasks können Sie:
- Neue Projektdateien von Grund auf neu erstellen oder auf Vorlagen basieren
- Vorhandene Dateien in verschiedenen Formaten öffnen (MPP, MPT, MPX, XML, XER, P6 XML)
- Projekte in mehreren Formaten speichern, einschließlich MPP, XML, PDF, HTML und mehr
Dieser Artikel erklärt, wie man Projektdateien erstellt, liest und speichert mithilfe der Project Klasse.
Erstellen einer leeren Projektdatei
Die Project Klasse ist die Hauptklasse in Aspose.Tasks, die verwendet wird, um Eigenschaften eines Projekts sowie dessen Verhalten zu setzen und abzurufen. Die Save-Methode dieser Klasse macht es möglich, das Project mit einem einzigen API-Aufruf in verschiedene Ausgabeformate wie XML, MPP, PDF, HTML usw. zu rendern. Diese Methode akzeptiert einen Dateistream oder Dateinamen und einen der Werte, die vom SaveFileFormat Aufzählungstyp.
Die folgenden Codezeilen erstellen eine einfache Projektdatei im XML-Format.
Ein leeres Projekt erstellen und als XML-Datei speichern
Dieses Beispiel zeigt, wie man ein völlig neues Projekt erstellt und es als XML-Datei speichert, die in Microsoft Project geöffnet werden kann.
1Project project = new Project();
2project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);Die resultierende XML-Projektdatei kann in Microsoft Project mit den folgenden Schritten geöffnet werden:
- Im Datei Menü, wählen Sie Öffnen.
- Wählen Sie das XML-Format (*.xml)-Option aus den Dateitypen und navigieren Sie zur Ausgabedatei.
- Im Projekt Menü, wählen Sie Projektinformationen
Ein leeres Projekt erstellen und in einen Stream speichern
Wenn Sie mit Projekten im Arbeitsspeicher arbeiten müssen (z. B. in Webanwendungen oder Cloud-Umgebungen), können Sie direkt in einen MemoryStream anstatt in eine Datei zu schreiben.
1// Create a project instance
2Project newProject = new Project();
3
4// Create a file stream
5using (FileStream stream = new FileStream("EmptyProjectSaveStream_out.xml", FileMode.Create, FileAccess.Write))
6{
7 // Write the stream into XML format
8 newProject.Save(stream, SaveFileFormat.XML);
9}Ein leeres Projekt erstellen und als MPP speichern
Dieses Beispiel zeigt, wie man eine native Microsoft Project MPP Datei programmgesteuert erzeugt.
1// there is no more need to load MPP template to save it into MPP
2// add tasks, resources, etc.
3Project project = new Project();
4
5// !The project will be saved into MPP by using internal MPP template.
6project.Save("New Project.mpp", SaveFileFormat.MPP);Eine Projektdatei lesen
Aspose.Tasks for .NET ermöglicht es Ihnen, vorhandene Projekte in verschiedenen Formaten zu lesen: XML, MPP, MPT, MPX, XER, Primavera P6 XML usw. und diese nach dem Aktualisieren wieder in MPP oder ein anderes Format speichern. Die folgenden Ausschnitte zeigen, wie eine Projektdatei mithilfe des Konstruktors der Project-Klasse gelesen werden kann.
Projektdateien als Vorlage lesen
Dieses Beispiel zeigt, wie man ein Projekt mit dem Project Konstruktor lädt und es als Vorlage für weitere Arbeiten verwendet.
1// Read existing project template file
2Project project = new Project("New Project.mpp");Projektdatei aus einem Stream lesen
Für Szenarien, in denen Projekte in Streams hochgeladen oder gespeichert werden, können Sie sie direkt aus Stream Objekten laden.
1// Read the project xml into file stream
2using (FileStream stream = new FileStream("ReadProjectFileFromStream.xml", FileMode.Open))
3{
4 // Create project using file stream
5 Project project = new Project(stream);
6}Projektdaten aus der Microsoft Project Server-Datenbank importieren
Wir planen, das Importieren von Projektdaten aus der Microsoft Project Server-Datenbank in einer zukünftigen Version einzustellen. Stattdessen können Sie den Import/Export von Projektdaten über die PWA API von Microsoft Project Server verwenden.
Siehe Dokumentation für ProjectServerManager Klasse für weitere Details.
1 // Create connection string
2 SqlConnectionStringBuilder sqlConnectionString = new SqlConnectionStringBuilder();
3 sqlConnectionString.DataSource = "192.168.56.2,1433";
4 sqlConnectionString.Encrypt = true;
5 sqlConnectionString.TrustServerCertificate = true;
6 sqlConnectionString.InitialCatalog = "ProjectServer_Published";
7 sqlConnectionString.NetworkLibrary = "DBMSSOCN";
8 sqlConnectionString.UserID = "sa";
9 sqlConnectionString.Password = "*****";
10
11 // Use Aspose.Tasks.Connectivity namespace
12 MspDbSettings settings = new MspDbSettings(sqlConnectionString.ConnectionString, new Guid("E6426C44-D6CB-4B9C-AF16-48910ACE0F54"));
13 Project project = new Project(settings);Projektdaten aus MPD (Microsoft Project Database)-Datei importieren
Ältere Projektdatenbanken, die im .mpd MPD-Format gespeichert sind, können ebenfalls gelesen werden.
1 DbSettings settings = new MpdSettings("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + "MpdFileToRead.mpd", 1);
2 Project project = new Project(settings);Ungültige Zeichen beim Laden des Projekts ignorieren
Einige Dateien können ungültige Zeichen in den benutzerdefinierten Feldern enthalten. Microsoft Project erlaubt keine ungültigen Zeichen, sodass die Dateien mit Automation oder anderen Tools erstellt oder bearbeitet worden sein könnten. Wenn diese über die API geladen werden, kann dies zu einer Ausnahme führen. Um solche ungültigen Zeichen zu ignorieren, kann der überladene Konstruktor der Project-Klasse zusammen mit der Delegatenmethode ParseErrorCallBack verwendet werden.
1static void Run()
2{
3 // Open modified xml stream
4 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(GetModifiedXml())))
5 {
6 Project project = new Project(stream, new ParseErrorCallback(CustomDurationHandler));
7 }
8}
9
10static string GetModifiedXml()
11{
12 // Open valid xml file and modify it
13 using (TextReader reader = new StreamReader("IgnoreInvalidCharacters.xml"))
14 {
15 string xml = reader.ReadToEnd();
16 Regex regex = new Regex("PT(\\d+)H(\\d+)M(\\d+)S");
17 return regex.Replace(xml, "**$1Hrs$2Mins$3Secs**");
18 }
19}
20
21static object CustomDurationHandler(object sender, ParseErrorArgs args)
22{
23 Regex regex = new Regex("[*]{2}(\\d+)Hrs(\\d+)Mins(\\d+)Secs[*]{2}");
24 if (args.FieldType == typeof(TimeSpan))
25 {
26 Debug.Print("Object field : {0}, Invalid value : {1}", args.FieldName, args.InvalidValue);
27 string duration = regex.Replace(args.InvalidValue, "PT$1H$2M$3S");
28 TimeSpan newValue = Duration.ParseTimeSpan(duration);
29 Debug.Print("New value : {0}", newValue);
30 return newValue;
31 }
32 // Here we handle only TimeSpan instances, so rethrow original exception with other types
33 throw args.Exception;
34}Arbeiten mit Zeichencodierungen
Beim Arbeiten mit MPX-Dateien müssen Sie möglicherweise die richtige Datei-Kodierung angeben. Dies stellt sicher, dass Textdaten korrekt gelesen und angezeigt werden. Aspose.Tasks for .NET bietet Unterstützung für die Kodierung von MPX-Dateien. Das folgende Codebeispiel zeigt die Kodierungseinstellungen.
1// Specify Encodings
2using (StreamReader streamReader = new StreamReader("Project.mpx", System.Text.Encoding.GetEncoding("ISO-8859-1")))
3{
4 Project project = new Project(streamReader.BaseStream);
5}Aspose.Tasks for .NET gibt Entwicklern volle Kontrolle über Microsoft Project-Dateien, ohne dass MS Project selbst erforderlich ist.
Mit der Project Klasse können Sie:
- Neue Projekte (XML, MPP) erstellen und in eine Datei oder in einen Stream speichern
- Vorhandene Projekte in mehreren Formaten lesen
- Mit Project Server und Datenbankintegrationen arbeiten (Legacy-Unterstützung)
- Kodierungsprobleme und ungültige Zeichen elegant behandeln
Egal, ob Sie eine Desktop-Lösung oder eine Webanwendung entwickeln, Aspose.Tasks bietet eine konsistente und zuverlässige API zur programmgesteuerten Verwaltung von Projektdaten.