プロジェクトのタイムラインを可視化することで、チームは整合性を保ち、期限を守ることができます。 Conholdate.Total for Java は、数行のコードだけで Java でガントチャートを作成できる強力な SDK を提供します。このガイドでは、ライブラリのセットアップ方法、ワークシートにタスクデータを入力する方法、積み上げ棒グラフをガントスタイルのタイムラインに変換する方法、そして結果を Excel にエクスポートする方法を紹介します。

Conholdate.Total for Java のセットアップ

コーディングを開始する前に、Java 17 以降がインストールされており、Maven 対応の IDE があることを確認してください。Conholdate Maven リポジトリと SDK の依存関係を pom.xml に追加します:

<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>

最新の JAR を直接 ダウンロードページ から取得することもできます。SDK がクラスパスにある状態になれば、チャートの作成を開始できるようになります。

ステップバイステップで構築: Javaでガントチャートを作成

ステップ 1: ワークブックを作成し、タスク データを入力

このように作成されたガントチャートは、実際にはワークシートデータの上に重ねられた積み上げ棒グラフです。そのため、最初のステップは Workbook を作成し、最初の Worksheet を取得して、チャートが読み取るタスク名、開始オフセット、期間を入力することです。

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);

列 A にはタスク名が格納され、列 C には各タスクにかかる日数が、列 D にはプロジェクト開始からタスクが開始するまでの日数が格納されます。チャートの 2 つの系列(開始オフセットと期間)は、列 D と C から直接読み取られます。

ステップ 2: 積み上げ棒グラフを追加し、シリーズを設定する

データが配置されたら、ワークシートに BAR_STACKED チャートを追加し、そのシリーズを設定します。開始オフセットシリーズは各タスクバーを右に押し出し、期間シリーズはその上に表示されるタスクバーを描画します。

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");

チャートはワークシートの行 7、列 0 にアンカーされ、30 行 × 10 列にまたがります。

ステップ 3: ガントチャートのように見えるようにチャートのスタイルを設定する

積み上げ棒グラフをガントチャートとして読み取るコツは、オフセット系列を非表示にして、期間バーだけが正しい開始位置に浮かんで表示されるようにすることです。

// 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);

ステップ 4: 軸、凡例、サイズの設定

カテゴリ軸を逆にして、最初のタスクが上部に表示されるようにし、両方の軸にラベルを付け、意味のあるシリーズが1つだけなので凡例をオフにします。

// 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);

ステップ5: ワークブックを保存する

最後に、ワークブックを保存します。SDKは XLSX、XLS、そして SaveFormat 列挙体にリストされているその他の形式をサポートしています。

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

Excel(または互換性のあるスプレッドシート アプリ)で GanttChartResult.xlsx を開くと、ワークシートに埋め込まれた完成したガントチャートが表示されます。

完全なコード例:ガントチャート Java 例

以下の例は、Javaでガントチャートを最初から最後まで作成する方法を示しています。

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);
    }
}

注意: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや構成値を実際の環境に合わせて更新し、すべての必須依存関係が正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメント を参照するか、サポートチーム にお問い合わせください。

結論

Javaでガントチャートを作成することは、Conholdate.Total for Java を使用すれば簡単です。タスク データをワークシートに入力し、積み上げ棒グラフを追加してシリーズと軸のスタイルを設定することで、Excel ファイル内に直接表示されるプロフェッショナルなタイムラインを生成できます。開始オフセット系列を非表示にし、期間系列のスタイルを設定することが、通常の積み上げ棒グラフをガントチャートに変換する重要なテクニックです。商用ライセンスが本番環境で必要であることを忘れないでください。一時ライセンスページから一時ライセンスを取得するか、価格ページで価格詳細をご確認ください。今日からアプリケーションにガントチャートを統合し、関係者に分かりやすい視覚的スケジュールで情報を提供しましょう。

よくある質問

JavaでConholdate.Totalを使用してガントチャートを作成する方法は?
Workbook を作成し、ワークシートに BAR_STACKED チャートを追加し、2 つの系列を追加します。非表示の開始オフセット系列と表示される期間系列です。タスク名をカテゴリ データとして設定し、表示系列のスタイルを設定し、ワークブックを保存します。完全なコード スニペットはこの記事で提供されています。

GanttチャートをExcel以外の形式にエクスポートできますか?
はい。チャートはワークブックに埋め込まれているため、SaveFormat 列挙体の任意の値(例: XLSX、XLS、ODS)を使用してファイルを保存できます。完全な一覧については、公式ドキュメント を参照してください。

本番環境で必要なライセンスは何ですか?
商用ライセンスが必須です。一時ライセンスページから一時ライセンスをリクエストでき、価格ページで価格を確認できます。

大規模なガントチャートのパフォーマンスを向上させるにはどうすればよいですか?
各シリーズが参照するデータ範囲をできるだけ絞り、不要なワークブックの再計算を避け、実際に必要なシリーズや軸に対する書式設定呼び出しを制限します。チャートごとのタスク数を適切に保つことも、大規模なプロジェクトファイルの描画を高速に保つポイントです。

もっと読む