Die dhtmlxGantt-Bibliothek ermöglicht es Ihnen, nahtlos mit Daten aus dem Gantt-Diagramm und MS Project zu arbeiten. Sie können Daten aus dem Gantt-Diagramm nach MS Project exportieren und auch Daten aus MS Project in das Gantt-Diagramm importieren.
Der Service ist kostenlos, aber die resultierende Datei wird ein Wasserzeichen unter der GPL-Lizenz enthalten. Wenn Sie eine gültige Lizenz haben, wird der Export während des Supportzeitraums (12 Monate für alle PRO-Lizenzen) wasserzeichenfrei sein.
Es gibt mehrere Exportdienste, die Sie verwenden können. Sie können sie auf Ihrem Computer installieren, um das Gantt-Diagramm lokal nach MS Project zu exportieren. Beachten Sie, dass diese Exportdienste nicht Teil des Gantt-Pakets sind. Weitere Details zur Nutzung finden Sie im relevanten Artikel.
Der Exportdienst hat einige Einschränkungen hinsichtlich Zeit und Anfragengröße.
Wenn der Export mehr als 20 Sekunden dauert, wird der Prozess gestoppt und Sie sehen den folgenden Fehler:
Error: Timeout trigger 20 seconds
Wenn mehrere Benutzer gleichzeitig exportieren, kann der Prozess verlangsamt werden. Die für jede Exportanfrage eines Benutzers aufgewendete Zeit wird jedoch separat gezählt.
Der gemeinsame API-Endpunkt https://export.dhtmlx.com/gantt wird für alle Exportmethoden (exportToPDF, exportToPNG, exportToMSProject, etc.) verwendet, mit einer maximalen Anfragengröße von 10 MB.
Für MS Project-spezifische Exporte/Importe gibt es einen dedizierten Endpunkt https://export.dhtmlx.com/gantt/project. Dieser Endpunkt unterstützt Dateigrößen bis zu 40 MB und funktioniert auch für Primavera P6 Dienste.
Wenn Ihr Diagramm groß ist, können Sie ein eigenständiges Exportmodul verwenden. Das Modul ist kostenlos, wenn Sie eine Commercial, Enterprise oder Ultimate Lizenz haben. Sie können das Modul auch separat erwerben.
Weitere Informationen zur Verwendung des Exportmoduls mit MS Project finden Sie in diesem Leitfaden.
Die Gantt-Komponente unterstützt den Export von Aufgaben, Verknüpfungen und Ressourcen nach MS Project.
Um Daten aus dem Gantt-Diagramm nach MS Project zu exportieren:
gantt.plugins
:gantt.plugins({
export_api: true
});
Für Gantt-Versionen älter als 8.0, fügen Sie https://export.dhtmlx.com/gantt/api.js in Ihre Seite ein, um den Online-Exportdienst zu aktivieren:
<script src="codebase/dhtmlxgantt.js"></script>
<script src="https://export.dhtmlx.com/gantt/api.js"></script>
gantt.exportToMSProject
, um die Daten zu exportieren.gantt.exportToMSProject();
Diese Methode sendet eine Anfrage an den Remote-Dienst, der entweder eine XML-Projektdatei oder eine URL zum Herunterladen der generierten Datei bereitstellt.
Related sample: Export data : MS Project, PrimaveraP6, Excel & iCal
Die Antwort ist ein JSON-Objekt mit folgender Struktur:
{
data: {},
config: {},
resources: [],
worktimes: []
}
Die Methode exportToMSProject()
akzeptiert ein optionales Objekt mit verschiedenen Eigenschaften:
gantt.exportToMSProject({
name: 'custom.xml'
});
gantt.exportToMSProject({
auto_scheduling: false
});
gantt.exportToMSProject({
skip_circular_links: false
});
gantt.exportToMSProject({
project: {
'Author': 'I am!',
'MinutesPerDay': function () {
return gantt.config.hours_per_day * 60;
}
}
});
Unterstützte Projekteigenschaften sind hier aufgelistet.
gantt.exportToMSProject({
tasks: {
'StartVariance': function (task) {
return task.startVariance || 0;
},
'PercentWorkComplete': function (task) {
return task.progress + 0.1;
},
'Custom': () => 'Custom value',
'Custom 2': 'My Custom value'
}
});
Unterstützte Aufgabeneigenschaften sind hier aufgelistet.
Das start_date und end_date sollten sowohl Datum als auch Uhrzeit im Format %d-%m-%Y %H:%i enthalten.
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.exportToMSProject({
data: customData
});
Related sample: Gantt. Export custom data
gantt.exportToMSProject({
callback: function(res){
alert(res.url);
}
});
gantt.exportToMSProject({
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. Weisen Sie Ressourcen mit der ResourceAssignments-Eigenschaft der Aufgaben-Konfiguration zu:
var users = [
{key:'0', label: "N/A"},
{key:'1', label: "John"},
{key:'2', label: "Mike"},
{key:'3', label: "Anna"}
];
gantt.exportToMSProject({
resources: users
.filter(u => u.key !== '0')
.map(u => ({
id: u.key,
name: u.label,
type: "work"
})),
tasks: {
ResourceAssignments: (task) => task.user
}
});
Die ResourceAssignments-Eigenschaft kann eine Zeichenfolge/Zahl oder ein Array solcher Werte zurückgeben:
tasks: {
ResourceAssignments: (task) => [task.user, task.office]
}
gantt.exportToMSProject({
server: "https://myapp.com/myexport/gantt"
});
Um eine XML- oder MPP-MS Project-Datei zu konvertieren, senden Sie eine Anfrage an den Exportdienst:
Parameter:
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="msproject-parse">
<button type="submit">Get</button>
</form>
Alternativ können Sie die clientseitige API verwenden:
gantt.importFromMSProject({
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 MS Project file
Hierbei ist file eine File-Instanz, die eine XML- oder MPP-Projektdatei enthält.
gantt.importFromMSProject erfordert Unterstützung für die HTML5 File API.
Die Antwort ist als JSON-Objekt mit folgendem Format strukturiert:
{
data: {},
config: {},
resources: [],
worktime: {}
}
Um die gewünschte Dauereinheit anzugeben, können Sie den durationUnit-String (z.B. "minute", "hour", "day", "week", "month", "year") an den Server senden. So geht's:
<form action="https://export.dhtmlx.com/gantt" method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="type" value="msproject-parse">
<input type="hidden" name="data"
value="{ \"durationUnit\": \"hour\" }" />
<button type="submit">Get</button>
</form>
Alternativ können Sie den folgenden JavaScript-Code verwenden:
gantt.importFromMSProject({
data: file,
durationUnit: "hour",
callback: function(project){}
});
Falls bestimmte Projektfelder benötigt werden, können Sie das projectProperties-Eingabefeld mit einem Array der erforderlichen Felder in die Serveranfrage aufnehmen. Dies extrahiert bestimmte Eigenschaften der Project-Entität in die config-Eigenschaft der Antwort. Unterstützte Eigenschaften sind hier aufgelistet.
Zum 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="msproject-parse">
<input type="hidden" name="data"
value="{ \"projectProperties\": [\"Author\", \"Title\"] }" />
<button type="submit">Get</button>
</form>
Oder verwenden Sie JavaScript:
gantt.importFromMSProject({
data: file,
durationUnit: "hour",
projectProperties: ["Author", "Title"],
callback: function(project){
var config = project.config;
alert(config.$custom_properties.Author);
}
});
Um aufgabenspezifische Felder abzurufen, fügen Sie taskProperties in die Serveranfrage mit einem Array der gewünschten Felder ein. Dies extrahiert bestimmte Eigenschaften der Task-Entitäten. Unterstützte Eigenschaften sind hier aufgelistet.
Beispiel mit HTML:
<form action="https://export.dhtmlx.com/gantt" method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="type" value="msproject-parse">
<input type="hidden" name="data"
value="{ \"taskProperties\": [\"Contact\", \"Priority\"] }" />
<button type="submit">Get</button>
</form>
Oder mit JavaScript:
gantt.importFromMSProject({
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;
});
Um Aufgabentypen zu bestimmen, werden Aufgaben mit dem Project-Typ Summary: "1"
haben, und Aufgaben mit dem Milestone-Typ Milestone: "1"
. Das folgende Beispiel zeigt, wie man Daten mit diesen Eigenschaften importiert und die Aufgabentypen entsprechend festlegt:
gantt.importFromMSProject({
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);
}
}
});
Sie können dann die Aufgabentypen basierend auf den importierten Eigenschaften anpassen:
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 MSP files. Get task type from properties
Es gibt zwei API-Endpunkte für MS Project Export-/Importdienste:
Geben Sie den Endpunkt mit der server-Eigenschaft in der Exportkonfiguration an:
gantt.importFromMSProject({
server:"https://export.dhtmlx.com/gantt",
data: file,
callback: function(project){
// some logic
}
});
Standardmäßig ist der Endpunkt https://export.dhtmlx.com/gantt. Für größere Dateien, die 4 MB überschreiten, verwenden Sie den zweiten Endpunkt:
gantt.importFromMSProject({
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 auf MS Project Importe/Exporte beschränkt. Andere Methoden, wie gantt.exportToPDF({server:"https://export.dhtmlx.com/gantt/project"}), führen zu einem Serverfehler.
Die Zeitberechnungen in dhtmlxGantt und MS Project unterscheiden sich aufgrund ihrer jeweiligen Ansätze. Diese Unterschiede können zu unterschiedlichen Ergebnissen führen. Sie können die Gantt-Einstellungen anpassen, um die Ergebnisse enger abzustimmen:
gantt.exportToMSProject({
project: {
HoursPerDay: function () {
return 24;
},
MinutesPerDay: function () {
return 24 * 60;
}
}
});
Related sample: Export to MSProject without the "work_time" settings
gantt.setWorkTime({day:0, hours:[0,24]});
gantt.setWorkTime({day:1, hours:[0,24]});
gantt.setWorkTime({day:2, hours:[0,24]});
gantt.setWorkTime({day:3, hours:[0,24]});
gantt.setWorkTime({day:4, hours:[0,24]});
gantt.setWorkTime({day:5, hours:[0,24]});
gantt.setWorkTime({day:6, hours:[0,24]});
gantt.config.duration_unit = "hour";
Related sample: Export to MSProject without the "work_time" settings
Zurück nach oben