Die Visualisierung von Projektzeitplänen hilft Teams, abgestimmt zu bleiben und Termine einzuhalten. Conholdate.Total for Java bietet ein robustes SDK, das das Erstellen von Gantt‑Diagrammen in Java mit nur wenigen Codezeilen erleichtert. In diesem Leitfaden sehen Sie, wie Sie die Bibliothek einrichten, Aufgabendaten in einem Arbeitsblatt populieren, ein gestapeltes Balkendiagramm in einen Gantt‑ähnlichen Zeitplan umwandeln und das Ergebnis nach Excel exportieren.

Einrichtung von Conholdate.Total für Java

Bevor Sie mit dem Codieren beginnen, stellen Sie sicher, dass Sie Java 17 oder höher und eine Maven‑kompatible IDE haben. Fügen Sie das Conholdate Maven‑Repository und die SDK‑Abhängigkeit zu Ihrer pom.xml hinzu:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>
<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

Sie können die neuesten JARs auch direkt von der Download‑Seite herunterladen. Sobald das SDK in Ihrem Klassenpfad ist, können Sie mit dem Erstellen des Diagramms beginnen.

Schritt für Schritt: Gantt-Diagramm in Java erstellen

Schritt 1: Erstellen Sie die Arbeitsmappe und füllen Sie die Aufgabendaten

Ein Gantt‑Diagramm, das auf diese Weise erstellt wird, ist eigentlich ein gestapeltes Balkendiagramm, das über den Arbeitsblattdaten liegt, sodass der erste Schritt darin besteht, das Workbook zu erstellen, das erste Worksheet zu holen und die Aufgabennamen, Startversätze und Dauern auszufüllen, die das Diagramm ausliest.

com.aspose.cells.Workbook workbook = new com.aspose.cells.Workbook();
com.aspose.cells.Worksheet sheet = workbook.getWorksheets().get(0);

com.aspose.cells.Cells cells = sheet.getCells();
cells.get("A1").putValue("Task");
cells.get("C1").putValue("Duration (Days)");
cells.get("D1").putValue("Start Offset (Days)");

cells.get("A2").putValue("Requirement Analysis");
cells.get("C2").putValue(5);
cells.get("D2").putValue(0);

cells.get("A3").putValue("Design");
cells.get("C3").putValue(7);
cells.get("D3").putValue(5);

cells.get("A4").putValue("Implementation");
cells.get("C4").putValue(24);
cells.get("D4").putValue(12);

cells.get("A5").putValue("Testing");
cells.get("C5").putValue(15);
cells.get("D5").putValue(36);

cells.get("A6").putValue("Deployment");
cells.get("C6").putValue(2);
cells.get("D6").putValue(51);

Spalte A enthält den Aufgabennamen, Spalte C enthält, wie viele Tage jede Aufgabe dauert, und Spalte D enthält, wie viele Tage nach Projektbeginn jede Aufgabe beginnt. Die beiden Serien des Diagramms (Startversatz und Dauer) werden direkt aus den Spalten D und C gelesen.

Schritt 2: Gestapelte Balkendiagramm hinzufügen und die Serie konfigurieren

Mit den Daten an Ort und Stelle fügen Sie dem Arbeitsblatt ein BAR_STACKED‑Diagramm hinzu und verbinden dessen Serien. Die Start‑Versatz‑Serie schiebt jede Aufgabenleiste nach rechts; die Dauer‑Serie zeichnet die sichtbare Aufgabenleiste darüber.

int chartIndex = sheet.getCharts().add(com.aspose.cells.ChartType.BAR_STACKED, 7, 0, 30, 10);
com.aspose.cells.Chart chart = sheet.getCharts().get(chartIndex);
chart.getTitle().setText("Gantt Chart");

// Add offset and duration as series
chart.getNSeries().add("D2:D6", true); // Start Offset
chart.getNSeries().add("C2:C6", true); // Duration

// Set task names as categories
chart.getNSeries().setCategoryData("A2:A6");

Das Diagramm ist im Arbeitsblatt bei Zeile 7, Spalte 0 verankert und erstreckt sich über 30 Zeilen und 10 Spalten.

Schritt 3: Diagramm formatieren, damit es wie ein Gantt-Diagramm aussieht

Der Trick, ein gestapeltes Balkendiagramm wie ein Gantt‑Diagramm zu lesen, besteht darin, die Offset‑Serie unsichtbar zu machen, sodass nur die Dauerbalken angezeigt werden, die an der richtigen Startposition schweben.

// Make offset bars invisible
chart.getNSeries().get(0).getArea().setFormatting(com.aspose.cells.FormattingType.NONE);

// Style duration bars
chart.getNSeries().get(1).getArea().setFormatting(com.aspose.cells.FormattingType.CUSTOM);
chart.getNSeries().get(1).getArea().setForegroundColor(com.aspose.cells.Color.getSteelBlue());
chart.getNSeries().get(1).getDataLabels().setShowValue(true);

Schritt 4: Achsen, Legende und Größe konfigurieren

Drehen Sie die Kategorienachse um, sodass die erste Aufgabe oben erscheint, beschriften Sie beide Achsen und deaktivieren Sie die Legende, da es nur eine sinnvolle Serie zum Lesen gibt.

// Axis settings
chart.getCategoryAxis().setPlotOrderReversed(true);
chart.getCategoryAxis().getTitle().setText("Tasks");
chart.getValueAxis().getTitle().setText("Days from Start");
chart.getValueAxis().getMajorGridLines().setVisible(true);

// Hide legend
chart.setShowLegend(false);

// Resize chart
chart.getChartObject().setWidth(700);
chart.getChartObject().setHeight(400);

Schritt 5: Arbeitsmappe speichern

Schließlich speichern Sie die Arbeitsmappe. Das SDK unterstützt XLSX, XLS und weitere Formate, die im SaveFormat‑Enum aufgelistet sind.

// Save the result
workbook.save("GanttChartResult.xlsx", com.aspose.cells.SaveFormat.XLSX);

Öffnen Sie GanttChartResult.xlsx in Excel (oder einer kompatiblen Tabellenkalkulationsanwendung), um das fertiggestellte Gantt‑Diagramm zu sehen, das im Arbeitsblatt eingebettet ist.

Vollständiges Codebeispiel: Gantt-Diagramm Java-Beispiel

Das folgende Beispiel zeigt, wie man ein Gantt‑Diagramm in Java von Anfang bis Ende erstellt.

public class GanttChartDemo {
    public static void main(String[] args) {
        // Create the workbook and get the first worksheet
        com.aspose.cells.Workbook workbook = new com.aspose.cells.Workbook();
        com.aspose.cells.Worksheet sheet = workbook.getWorksheets().get(0);

// Populate task names, durations, and start offsets
        com.aspose.cells.Cells cells = sheet.getCells();
        cells.get("A1").putValue("Task");
        cells.get("C1").putValue("Duration (Days)");
        cells.get("D1").putValue("Start Offset (Days)");

cells.get("A2").putValue("Requirement Analysis");
        cells.get("C2").putValue(5);
        cells.get("D2").putValue(0);

cells.get("A3").putValue("Design");
        cells.get("C3").putValue(7);
        cells.get("D3").putValue(5);

cells.get("A4").putValue("Implementation");
        cells.get("C4").putValue(24);
        cells.get("D4").putValue(12);

cells.get("A5").putValue("Testing");
        cells.get("C5").putValue(15);
        cells.get("D5").putValue(36);

cells.get("A6").putValue("Deployment");
        cells.get("C6").putValue(2);
        cells.get("D6").putValue(51);

// Add a stacked bar chart that will act as the Gantt chart
        int chartIndex = sheet.getCharts().add(com.aspose.cells.ChartType.BAR_STACKED, 7, 0, 30, 10);
        com.aspose.cells.Chart chart = sheet.getCharts().get(chartIndex);
        chart.getTitle().setText("Gantt Chart");

// Add offset and duration as series
        chart.getNSeries().add("D2:D6", true); // Start Offset
        chart.getNSeries().add("C2:C6", true); // Duration

// Set task names as categories
        chart.getNSeries().setCategoryData("A2:A6");

// Make offset bars invisible
        chart.getNSeries().get(0).getArea().setFormatting(com.aspose.cells.FormattingType.NONE);

// Style duration bars
        chart.getNSeries().get(1).getArea().setFormatting(com.aspose.cells.FormattingType.CUSTOM);
        chart.getNSeries().get(1).getArea().setForegroundColor(com.aspose.cells.Color.getSteelBlue());
        chart.getNSeries().get(1).getDataLabels().setShowValue(true);

// Axis settings
        chart.getCategoryAxis().setPlotOrderReversed(true);
        chart.getCategoryAxis().getTitle().setText("Tasks");
        chart.getValueAxis().getTitle().setText("Days from Start");
        chart.getValueAxis().getMajorGridLines().setVisible(true);

// Hide legend
        chart.setShowLegend(false);

// Resize chart
        chart.getChartObject().setWidth(700);
        chart.getChartObject().setHeight(400);

// Save the result
        workbook.save("GanttChartResult.xlsx", com.aspose.cells.SaveFormat.XLSX);
    }
}

Hinweis: Dieses Codebeispiel demonstriert die Kernfunktionalität. Bevor Sie es in Ihrem Projekt verwenden, stellen Sie sicher, dass Sie alle Dateipfade und Konfigurationswerte an Ihre tatsächliche Umgebung anpassen, überprüfen Sie, dass alle erforderlichen Abhängigkeiten ordnungsgemäß installiert sind, und testen Sie gründlich in Ihrer Entwicklungsumgebung. Wenn Sie auf Probleme stoßen, lesen Sie bitte die offizielle Dokumentation oder wenden Sie sich an das Support-Team für Unterstützung.

Fazit

Das Erstellen eines Gantt‑Diagramms in Java wird mit Conholdate.Total for Java unkompliziert. Indem Sie Aufgabendaten in einem Arbeitsblatt einfügen, ein gestapeltes Balkendiagramm hinzufügen und dessen Serien und Achsen formatieren, können Sie professionell aussehende Zeitpläne erzeugen, die direkt in einer Excel‑Datei eingebettet sind. Das Ausblenden der Start‑Offset‑Serie beim Formatieren der Dauer‑Serie ist die Schlüsseltechnik, die ein gewöhnliches gestapeltes Balkendiagramm in ein Gantt‑Diagramm verwandelt. Denken Sie daran, dass für den Produktionseinsatz eine kommerzielle Lizenz erforderlich ist; Sie können eine temporäre Lizenz von der temporären Lizenzseite erhalten oder Preisinformationen auf der Preisübersichtsseite einsehen. Beginnen Sie noch heute damit, Gantt‑Diagramme in Ihre Anwendungen zu integrieren, und halten Sie Ihre Stakeholder mit klaren visuellen Zeitplänen informiert.

FAQs

Wie erstelle ich ein Gantt‑Diagramm in Java mit Conholdate.Total?
Erstellen Sie ein Workbook, fügen Sie einem Arbeitsblatt ein BAR_STACKED‑Diagramm hinzu und fügen Sie zwei Reihen hinzu: eine versteckte Start‑Offset‑Reihe und eine sichtbare Dauern‑Reihe. Setzen Sie die Aufgabennamen als Kategoriedaten, formatieren Sie die sichtbare Reihe und speichern Sie das Arbeitsbuch. Der vollständige Code‑Snippet wird in diesem Artikel bereitgestellt.

Kann ich das Gantt‑Diagramm in andere Formate als Excel exportieren?
Ja. Da das Diagramm in einer Arbeitsmappe eingebettet ist, können Sie die Datei mit einem beliebigen Wert aus dem SaveFormat‑Enum speichern, z. B. XLSX, XLS oder ODS. Siehe die offizielle Dokumentation für die vollständige Liste.

Welche Lizenz ist für die Produktion erforderlich?
Eine kommerzielle Lizenz ist obligatorisch. Sie können eine temporäre Lizenz über die temporäre Lizenzseite anfordern und die Preise auf der Preisseite einsehen.

Wie kann ich die Leistung für große Gantt‑Diagramme verbessern?
Halten Sie den von jeder Serie referenzierten Datenbereich so eng wie möglich, vermeiden Sie unnötige Arbeitsmappen‑Neuberechnungen und beschränken Sie Formatierungsaufrufe auf die Serien und Achsen, die Sie tatsächlich benötigen. Die Anzahl der Aufgaben pro Diagramm vernünftig zu halten, sorgt ebenfalls für ein schnelles Rendern großer Projektdateien.

Weiterlesen