Mit der dhtmlxGantt-Bibliothek können Sie Daten aus Ihrem Gantt-Diagramm einfach in Primavera P6 exportieren oder Daten aus Primavera P6 in das Gantt-Diagramm importieren.
Der Exportdienst kann kostenlos genutzt werden, jedoch wird die resultierende Datei ein Wasserzeichen haben, wenn Sie die Bibliothek unter der GPL-Lizenz verwenden. Wenn Sie eine gültige PRO-Lizenz besitzen, wird der Export während Ihres Supportzeitraums (12 Monate für alle PRO-Lizenzen) wasserzeichenfrei sein.
Es gibt mehrere Exportdienste, die Sie auf Ihrem Computer einrichten können, um Gantt-Diagramme lokal nach Primavera P6 zu exportieren. Beachten Sie, dass diese Exportdienste nicht im Gantt-Paket enthalten sind. Einzelheiten zur Nutzung jedes Dienstes finden Sie im verwandten Artikel.
Der Online-Exportdienst hat einige Einschränkungen hinsichtlich der Zeit und der Anfragengröße.
Wenn der Exportvorgang mehr als 20 Sekunden dauert, wird er abgebrochen und Sie sehen eine Fehlermeldung wie diese:
Error: Timeout trigger 20 seconds
Wenn mehrere Benutzer gleichzeitig Gantt-Diagramme exportieren, kann der Vorgang etwas länger dauern. Die für jede Benutzeranfrage aufgewendete Zeit wird jedoch individuell berechnet.
Der allgemeine API-Endpunkt https://export.dhtmlx.com/gantt wird für alle Exportmethoden verwendet (exportToPDF, exportToPNG, exportToMSProject, etc.). Die maximale Anfragengröße beträgt hier 10 MB.
Für die Export-/Importdienste von MS Project und Primavera P6 (exportToMSProject, importFromMSProject, exportToPrimaveraP6, importFromPrimaveraP6) steht ein dedizierter API-Endpunkt zur Verfügung: https://export.dhtmlx.com/gantt/project. Dieser Endpunkt erlaubt eine größere Anfragengröße von 40 MB.
Wenn Sie größere Diagramme verarbeiten müssen, sollten Sie das Standalone-Exportmodul verwenden. Dieses Modul ist kostenlos enthalten, wenn Sie eine Commercial, Enterprise oder Ultimate Lizenz besitzen. Alternativ können Sie es separat erwerben.
Weitere Details zur Verwendung des Exportmoduls für MS Project finden Sie in der Dokumentation. Dieses Modul unterstützt sowohl den Export als auch den Import für MS Project und Primavera P6.
Das Gantt-Komponente ermöglicht den Export von Aufgaben, Verknüpfungen und Ressourcen nach Primavera P6.
Um Daten aus dem Gantt-Diagramm nach Primavera P6 zu exportieren, befolgen Sie diese Schritte:
gantt.plugins({
export_api: true
});
Für Gantt-Versionen älter als 8.0 müssen Sie https://export.dhtmlx.com/gantt/api.js in Ihre Seite einbinden, um den Online-Exportdienst zu nutzen. Zum Beispiel:
<script src="codebase/dhtmlxgantt.js"></script>
<script src="https://export.dhtmlx.com/gantt/api.js"></script>
gantt.exportToPrimaveraP6();
Diese Methode sendet eine Anfrage an den Remote-Dienst, der entweder eine XML-Projektdatei generiert oder einen Link zum Herunterladen der Datei bereitstellt.
Related sample: Export data : MS Project, PrimaveraP6, Excel & iCal
Beim Exportieren von Daten nach Primavera stellen Sie sicher, dass die Summary-Eigenschaft für Projektaufgaben auf true gesetzt ist, um eine ordnungsgemäße Funktionalität zu gewährleisten:
gantt.exportToPrimaveraP6({
tasks: {
Summary: function (task) {
return !!gantt.hasChild(task.id);
},
CustomProperty: function (task) {
return task.custom_property;
},
SlateId: function (task) {
return task.id + "";
},
}
});
Related sample: Custom properties for WBS tasks (PrimaveraP6's Summary tasks)
Die Antwort enthält ein JSON-Objekt mit folgender Struktur:
{
data: {},
config: {},
resources: [],
worktime: {}
}
Die exportToPrimaveraP6() Methode ermöglicht den Export von Daten durch Übergabe eines Objekts mit mehreren optionalen Eigenschaften:
gantt.exportToPrimaveraP6({
name: 'custom.xml'
});
gantt.exportToPrimaveraP6({
auto_scheduling: false
});
gantt.exportToPrimaveraP6({
skip_circular_links: false
});
gantt.exportToPrimaveraP6({
project: {
'Author': 'I am!',
'MinutesPerDay': function () {
return gantt.config.hours_per_day * 60;
}
}
});
Die Eigenschaften in diesem Objekt stimmen mit den entsprechenden Eigenschaften der Projekteigenschaft überein. Die Liste der unterstützten Eigenschaften finden Sie hier. Diese Eigenschaften können entweder feste Werte haben oder Funktionen sein, die während des Exports ausgeführt werden.
gantt.exportToPrimaveraP6({
tasks: {
'StartVariance': function (task) {
return task.startVariance || 0;
},
'PercentWorkComplete': function (task) {
return task.progress + 0.1;
},
'Custom': function (task) {
return 'Custom value';
},
'Custom 2': 'My Custom value'
}
});
Die Eigenschaften in diesem Objekt stimmen mit den entsprechenden Eigenschaften der Aufgabeneigenschaft überein. Die Liste der unterstützten Eigenschaften finden Sie hier. Diese können feste Werte oder Funktionen sein, die für jede Aufgabe während des Exports ausgeführt werden.
Stellen Sie sicher, dass start_date und end_date sowohl Datum als auch Uhrzeit enthalten (%d-%m-%Y %H:%i).
const customData = {
"data": [
{ "id": "10", "text": "Project #5", "start_date": "01-04-2025 00:00",
"duration": 3, "order": 10, "progress": 0.4, "open": true,
"end_date": "04-04-2025 00:00", "parent": 0
},
{ "id": "1", "text": "Task #67", "start_date": "02-04-2025 00:00",
"duration": 2, "order": 10, "progress": 0.6, "parent": "10",
"end_date": "04-04-2025 00:00"
},
{ "id": "2", "text": "Task #89", "start_date": "01-04-2025 00:00",
"duration": 2, "order": 20, "progress": 0.6, "parent": "10",
"end_date": "03-04-2025 00:00"
},
],
"links": [
{ "id": 1, "source": 1, "target": 2, "type": "1" },
]
}
gantt.exportToPrimaveraP6({
data: customData
});
Related sample: Gantt. Export custom data
gantt.exportToPrimaveraP6({
callback: function(res){
alert(res.url);
}
});
gantt.exportToPrimaveraP6({
resources: [
{"id":"1","name":"John","type":"work"},
{"id":"2","name":"Mike","type":"work"},
{"id":"3","name":"Anna","type":"work"}
]
});
Ressourcentypen können "work", "cost" oder "material" sein. Sie können Ressourcenaufgaben über die ResourceAssignments Eigenschaft in der Aufgaben-Konfiguration angeben:
var users = [// resources
{key:'0', label: "N/A"},
{key:'1', label: "John"},
{key:'2', label: "Mike"},
{key:'3', label: "Anna"}
];
gantt.exportToPrimaveraP6({
resources: users
.filter(function(u){
return u.key !== '0'; // skip the default option
})
.map(function(u){
return {
id: u.key,
name: u.label,
type: "work"
};
}),
tasks: {
ResourceAssignments: function(task){ return task.user; } }
});
Die ResourceAssignments Eigenschaft sollte eine Funktion sein, die ein Aufgabenobjekt nimmt und eine Zeichenfolge/Zahl oder ein Array davon zurückgibt.
tasks: {
ResourceAssignments: function(task){
return [task.user, task.office];
}
}
Related sample: Export Gantt with resources to Primavera P6
gantt.exportToPrimaveraP6({
server: "https://myapp.com/myexport/gantt"
});
Um eine XML- oder XER-Datei zu konvertieren, senden Sie die folgende Anfrage an den Exportdienst:
Parameter beinhalten:
Beispiel:
<form action="https://export.dhtmlx.com/gantt" method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="type" value="primaveraP6-parse">
<button type="submit">Get</button>
</form>
Alternativ können Sie die Client-seitige API verwenden:
gantt.importFromPrimaveraP6({
data: file,
taskProperties: ["Notes", "Name"],
callback: function (project) {
if (project) {
gantt.clearAll();
if (project.config.duration_unit) {
gantt.config.duration_unit = project.config.duration_unit;
}
gantt.parse(project.data);
}
}
});
Related sample: Import Primavera P6 file
Hier ist file eine File Instanz, die eine XML- oder XER-Projektdatei enthält.
gantt.importFromPrimaveraP6 erfordert Unterstützung durch die HTML5 File API.
Die Antwort enthält ein JSON-Objekt mit folgender Struktur:
{
data: {},
config: {},
resources: [],
worktime: {}
}
Sie können die erwartete Dauer-Einheit mit der durationUnit Eigenschaft ("minute", "hour", "day", "week", "month", "year") definieren.
<form action="https://export.dhtmlx.com/gantt" method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="type" value="primaveraP6-parse">
<input type="hidden" name="data"
value="{ \"durationUnit\": \"hour\" }" />
<button type="submit">Get</button>
</form>
oder
gantt.importFromPrimaveraP6({
data: file,
durationUnit: "hour",
callback: function(project){}
});
Um Projektfelder abzurufen, fügen Sie den projectProperties Parameter mit einem Array der gewünschten Felder hinzu. Diese Felder werden in die config Eigenschaft der Antwort extrahiert. Die Liste der unterstützten Eigenschaften finden Sie hier.
<form action="https://export.dhtmlx.com/gantt" method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="type" value="primaveraP6-parse">
<input type="hidden" name="data"
value="{ \"projectProperties\": [\"Author\", \"Title\"] }" />
<button type="submit">Get</button>
</form>
oder
gantt.importFromPrimaveraP6({
data: file,
durationUnit: "hour",
projectProperties: ["Author", "Title"],
callback: function(project){
var config = project.config;
alert(config.$custom_properties.Author);
}
});
Um Aufgabenfelder abzurufen, verwenden Sie den taskProperties Parameter mit einem Array der erforderlichen Felder. Diese Felder werden in die data Eigenschaft der Antwort extrahiert. Unterstützte Eigenschaften sind hier aufgelistet.
<form action="https://export.dhtmlx.com/gantt" method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="type" value="primaveraP6-parse">
<input type="hidden" name="data"
value="{ \"taskProperties\": [\"Contact\", \"Priority\"] }" />
<button type="submit">Get</button>
</form>
oder
gantt.importFromPrimaveraP6({
data: file,
durationUnit: "hour",
taskProperties: ["Contact", "Priority"],
callback: function(project){
var config = project.config;
alert(config.$custom_properties.Author);
gantt.parse(project.data);
}
});
gantt.attachEvent("onTaskLoading", function(task) {
if (task.$custom_data) {
task.contact = task.$custom_data["Contact"];
task.priority = task.$custom_data["priority"];
delete task.$custom_data;
}
return true;
});
Zur Bestimmung des Aufgabentyps ist die Logik einfach: Aufgaben, die als Projekt gekennzeichnet sind, haben die Eigenschaft Summary: "1"
, während Aufgaben, die als Meilenstein gekennzeichnet sind, die Eigenschaft Milestone: "1"
haben. Die Idee ist, Daten zu importieren, die diese Eigenschaften enthalten, und dann den Aufgabentyp entsprechend festzulegen.
So sieht der Import-Funktionsaufruf aus:
gantt.importFromPrimaveraP6({
data: file,
taskProperties: [
"Summary",
"Milestone",
],
callback: function (project) {
if (project) {
console.log(project)
gantt.clearAll();
if (project.config.duration_unit) {
gantt.config.duration_unit = project.config.duration_unit;
}
console.log('import: ', project.data);
gantt.parse(project.data);
}
}
});
Sobald die Daten importiert sind, können Sie Aufgabentypen basierend auf den erhaltenen Eigenschaften anpassen. Hier ist ein Beispiel:
gantt.attachEvent("onTaskLoading", function (task) {
if (task.$custom_data) {
if (task.$custom_data.Summary == "1") {
task.type = "project";
}
if (task.$custom_data.Milestone == "1") {
task.type = "milestone";
}
// delete task.$custom_data;
}
return true;
});
Related sample: Gantt. Import Primavera P6 files. Get task type from properties
Es stehen zwei API-Endpunkte zur Verfügung, um den Export-/Importdienst von Primavera P6 zu handhaben:
Der Endpunkt kann mit der server Eigenschaft im Exportkonfigurationsobjekt festgelegt werden:
gantt.importFromPrimaveraP6({
server:"https://export.dhtmlx.com/gantt",
data: file,
callback: function(project){
// some logic
}
});
Wenn kein Endpunkt angegeben ist, wird der Standardendpunkt https://export.dhtmlx.com/gantt verwendet. Zum Beispiel funktioniert der folgende Aufruf genauso wie der obige:
gantt.importFromPrimaveraP6({
data: file,
callback: function(project){
// some logic
}
});
Für die Bearbeitung größerer Projekte (über 4 MB) kann der zweite Endpunkt verwendet werden:
gantt.importFromPrimaveraP6({
server:"https://export.dhtmlx.com/gantt/project",
data: file,
callback: function(project){
// some logic
}
});
Dieser Endpunkt unterstützt Anfragen bis zu 40 MB und ist speziell für Primavera P6 Exporte und Importe konzipiert. Beachten Sie, dass er nur für Primavera P6-bezogene Operationen anwendbar ist.
Die Verwendung dieses Endpunkts für andere Methoden, wie gantt.exportToPDF({server:"https://export.dhtmlx.com/gantt/project"}), führt zu einem Serverfehler.
Zurück nach oben