在 powerpoint ppt java 中創建圖表

圖表用於總結和直觀地表示演示文稿中的數據。為了可視化數據,MS PowerPoint 提供了多種圖表類型。其中,最常用的圖表類型包括餅圖、折線圖、條形圖、直方圖、股票圖等。在本文中,您將學習如何使用 Java 在 PowerPoint 演示文稿中創建圖表。

用於在 PowerPoint 中創建圖表的 Java API

為了在演示文稿中創建不同類型的圖表,我們將使用 Aspose.Slides for Java。上述 API 允許您從 Java 應用程序中創建和操作 PowerPoint 演示文稿。此外,它允許您無縫地創建圖表並將其添加到演示文稿中。您可以 下載 API 或使用以下 Maven 配置安裝它。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-slides</artifactId>
    <version>21.7</version>
    <classifier>jdk16</classifier>
</dependency>

使用Java在PowerPoint PPT中創建柱形圖

以下是使用 Java 在 PowerPoint 演示文稿中創建柱形圖的步驟。

  • 首先,創建 Presentation 類的實例(在加載現有演示文稿的情況下,在構造函數中指定文件的路徑)。
  • 通過指定索引獲取幻燈片的引用。
  • 添加具有默認數據以及類型 ChartType.ClusteredColumn 的圖表。
  • 清除默認系列和類別。
  • 訪問 IChartDataWorkbook 對像中的圖表數據工作簿。
  • 將圖表的新系列和類別添加到工作簿。
  • 向圖表系列添加新圖表數據。
  • 最後,使用 Presentation.save(String, SaveFormat) 方法保存演示文稿。

為了進行演示,以下代碼示例展示瞭如何使用 Java 在 PowerPoint 演示文稿中創建柱形圖。

// 創建一個新的演示文稿
Presentation pres = new Presentation();
try {
    
    // 添加新柱形圖並清除默認類別和系列
    IChart ch = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 600, 450);
    ch.getChartData().getSeries().clear();
    ch.getChartData().getCategories().clear();
    
    // 訪問圖表數據
    IChartDataWorkbook fact = ch.getChartData().getChartDataWorkbook();
    fact.clear(0);
    int defaultWorksheetIndex = 0;

    // 添加類別
    IChartCategory category = ch.getChartData().getCategories().add(fact.getCell(0, "c2", "A"));
    category.getGroupingLevels().setGroupingItem(1, "Group1");
    category = ch.getChartData().getCategories().add(fact.getCell(0, "c3", "B"));

    category = ch.getChartData().getCategories().add(fact.getCell(0, "c4", "C"));
    category.getGroupingLevels().setGroupingItem(1, "Group2");
    category = ch.getChartData().getCategories().add(fact.getCell(0, "c5", "D"));

    category = ch.getChartData().getCategories().add(fact.getCell(0, "c6", "E"));
    category.getGroupingLevels().setGroupingItem(1, "Group3");
    category = ch.getChartData().getCategories().add(fact.getCell(0, "c7", "F"));

    category = ch.getChartData().getCategories().add(fact.getCell(0, "c8", "G"));
    category.getGroupingLevels().setGroupingItem(1, "Group4");
    category = ch.getChartData().getCategories().add(fact.getCell(0, "c9", "H"));

    // 添加系列
    IChartSeries series = ch.getChartData().getSeries().add(fact.getCell(0, "D1", "Series 1"),
            ChartType.ClusteredColumn);

    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D2", 10));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D3", 20));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D4", 30));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D5", 40));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D6", 50));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D7", 60));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D8", 70));
    series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, "D9", 80));
    
    // 用圖表保存演示文稿
    pres.save("column-chart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

下面是生成的柱形圖的截圖。

在 PowerPoint Java 中創建柱形圖

使用Java在PowerPoint PPT中製作散點圖

下面是使用Java在PowerPoint演示文稿中製作散點圖的步驟。

  • 使用 Presentation 類創建新演示文稿或加載現有演示文稿。
  • 獲取 ISlide 對像中幻燈片的引用。
  • 添加具有默認數據的 ScatterWithSmoothLines 圖表類型,並在 IChart 對像中獲取其引用。
  • 將圖表數據工作簿訪問到 IChartDataWorkbook 對像中並清除默認系列。
  • 向圖表數據添加新系列。
  • 將每個系列訪問到 IChartSeries 對像中,並將數據點添加到系列中。
  • 使用 IChartSeries.getMarker() 訪問系列的標記並設置其屬性。
  • 使用 Presentation.save(String, SaveFormat) 方法保存演示文稿。

以下代碼示例顯示瞭如何使用 Java 在 PowerPoint 演示文稿中創建散點圖。

// 實例化表示 PPTX 文件的 Presentation 類
Presentation pres = new Presentation();
try {
    // 訪問第一張幻燈片
    ISlide slide = pres.getSlides().get_Item(0);

    // 創建默認圖表
    IChart chart = slide.getShapes().addChart(ChartType.ScatterWithSmoothLines, 0, 0, 400, 400);
    
    // 獲取默認圖表數據工作表索引
    int defaultWorksheetIndex = 0;
    
    // 獲取圖表數據工作表
    IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
    
    // 刪除演示系列
    chart.getChartData().getSeries().clear();
    
    // 添加新系列
    chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 1, 1, "Series 1"), chart.getType());
    chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 1, 3, "Series 2"), chart.getType());
    
    // 獲取第一個圖表系列
    IChartSeries series = chart.getChartData().getSeries().get_Item(0);
    
    // 在那裡添加新點 (1:3)。
    series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 1), fact.getCell(defaultWorksheetIndex, 2, 2, 3));
    
    // 添加新點 (2:10)
    series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 2), fact.getCell(defaultWorksheetIndex, 3, 2, 10));
    
    // 編輯系列類型
    series.setType(ChartType.ScatterWithStraightLinesAndMarkers);
    
    // 更改圖表系列標記
    series.getMarker().setSize(10);
    series.getMarker().setSymbol(MarkerStyleType.Star);
    
    // 採取第二個圖表系列
    series = chart.getChartData().getSeries().get_Item(1);
    
    // 在那裡添加新點 (5:2)。
    series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 2, 3, 5), fact.getCell(defaultWorksheetIndex, 2, 4, 2));
    
    // 添加新點 (3:1)
    series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 3, 3, 3), fact.getCell(defaultWorksheetIndex, 3, 4, 1));
    
    // 添加新點 (2:2)
    series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 4, 3, 2), fact.getCell(defaultWorksheetIndex, 4, 4, 2));
    
    // 添加新點 (5:1)
    series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 5, 3, 5), fact.getCell(defaultWorksheetIndex, 5, 4, 1));
    
    // 更改圖表系列標記
    series.getMarker().setSize(10);
    series.getMarker().setSymbol(MarkerStyleType.Circle);
    
    // 保存演示文稿
    pres.save("scatter-chart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

以下屏幕截圖顯示了生成的散點圖。

在 C# 中的 powerpoint 中創建散點圖

使用 Java 在 PowerPoint PPT 中創建餅圖

以下是使用 Java 在 PowerPoint 演示文稿中創建餅圖的步驟。

  • 使用 Presentation 類創建新演示文稿或加載現有演示文稿。
  • 通過提供索引獲取幻燈片的參考。
  • 添加具有默認數據以及類型 ChartType.Pie 的圖表。
  • 訪問 IChartDataWorkbook 對像中的圖表數據。
  • 清除默認系列和類別。
  • 創建新系列和類別。
  • 為圖表系列添加新的圖表數據。
  • 為圖表添加新點並為餅圖的扇區添加自定義顏色。
  • 為系列設置標籤,為標籤設置引出線。
  • 設置餅圖幻燈片的旋轉角度。
  • 使用 Presentation.save(String, SaveFormat) 方法保存演示文稿。

以下代碼示例顯示瞭如何使用 Java 在 PowerPoint 演示文稿中創建餅圖。

// 實例化表示 PPTX 文件的 Presentation 類
Presentation pres = new Presentation();
try {
    // 訪問第一張幻燈片
    ISlide slides = pres.getSlides().get_Item(0);
    
    // 添加具有默認數據的圖表
    IChart chart = slides.getShapes().addChart(ChartType.Pie, 100, 100, 400, 400);
    
    // 設置圖表標題
    chart.getChartTitle().addTextFrameForOverriding("Sample Title");
    chart.getChartTitle().getTextFrameForOverriding().getTextFrameFormat().setCenterText(NullableBool.True);
    chart.getChartTitle().setHeight(20);
    chart.setTitle(true);
    
    // 將第一個系列設置為顯示值
    chart.getChartData().getSeries().get_Item(0).getLabels().getDefaultDataLabelFormat().setShowValue(true);
    
    // 設置圖表數據表索引
    int defaultWorksheetIndex = 0;
    
    // 獲取圖表數據工作表
    IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
    
    // 刪除默認生成的系列和類別
    chart.getChartData().getSeries().clear();
    chart.getChartData().getCategories().clear();
    
    // 添加新類別
    chart.getChartData().getCategories().add(fact.getCell(0, 1, 0, "First Qtr"));
    chart.getChartData().getCategories().add(fact.getCell(0, 2, 0, "2nd Qtr"));
    chart.getChartData().getCategories().add(fact.getCell(0, 3, 0, "3rd Qtr"));
    
    // 添加新系列
    IChartSeries series = chart.getChartData().getSeries().add(fact.getCell(0, 0, 1, "Series 1"), chart.getType());
    
    // 現在填充系列數據
    series.getDataPoints().addDataPointForPieSeries(fact.getCell(defaultWorksheetIndex, 1, 1, 20));
    series.getDataPoints().addDataPointForPieSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 50));
    series.getDataPoints().addDataPointForPieSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 30));
    
    // 在新版本中不起作用
    // 添加新點並設置扇區顏色
    // series.IsColorVaried = true;
    chart.getChartData().getSeriesGroups().get_Item(0).setColorVaried(true);
    
    IChartDataPoint point = series.getDataPoints().get_Item(0);
    point.getFormat().getFill().setFillType(FillType.Solid);
    point.getFormat().getFill().getSolidFillColor().setColor(Color.CYAN);
	
    // 設置扇區邊界
    point.getFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    point.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
    point.getFormat().getLine().setWidth(3.0);
    //point.getFormat().getLine().setStyle(LineStyle.ThinThick);
    //point.getFormat().getLine().setDashStyle(LineDashStyle.DashDot);
    
    IChartDataPoint point1 = series.getDataPoints().get_Item(1);
    point1.getFormat().getFill().setFillType(FillType.Solid);
    point1.getFormat().getFill().getSolidFillColor().setColor(Color.ORANGE);
    
    // 設置扇區邊界
    point1.getFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    point1.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
    point1.getFormat().getLine().setWidth(3.0);
    //point1.getFormat().getLine().setStyle(LineStyle.Single);
    //point1.getFormat().getLine().setDashStyle(LineDashStyle.LargeDashDot);
    
    IChartDataPoint point2 = series.getDataPoints().get_Item(2);
    point2.getFormat().getFill().setFillType(FillType.Solid);
    point2.getFormat().getFill().getSolidFillColor().setColor(Color.YELLOW);
    
    // 設置扇區邊界
    point2.getFormat().getLine().getFillFormat().setFillType(FillType.Solid);
    point2.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.RED);
    point2.getFormat().getLine().setWidth(2.0);
    //point2.getFormat().getLine().setStyle(LineStyle.ThinThin);
    //point2.getFormat().getLine().setDashStyle(LineDashStyle.LargeDashDotDot);
    
    // 為新系列的每個類別創建自定義標籤
    IDataLabel lbl1 = series.getDataPoints().get_Item(0).getLabel();
    
    // lbl.ShowCategoryName = true;
    lbl1.getDataLabelFormat().setShowValue(true);
    
    IDataLabel lbl2 = series.getDataPoints().get_Item(1).getLabel();
    lbl2.getDataLabelFormat().setShowValue(true);
    lbl2.getDataLabelFormat().setShowLegendKey(true);
    lbl2.getDataLabelFormat().setShowPercentage(true);
    
    IDataLabel lbl3 = series.getDataPoints().get_Item(2).getLabel();
    lbl3.getDataLabelFormat().setShowSeriesName(true);
    lbl3.getDataLabelFormat().setShowPercentage(true);
    
    // 顯示圖表的引導線
    series.getLabels().getDefaultDataLabelFormat().setShowLeaderLines(true);
    
    // 設置餅圖扇區的旋轉角度
    chart.getChartData().getSeriesGroups().get_Item(0).setFirstSliceAngle(180);
    
    // 用圖表保存演示文稿
    pres.save("pie-chart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

下面是生成的餅圖的截圖。

在 PowerPoint Java 中創建餅圖

使用 Java 在 PowerPoint PPTX 中添加直方圖圖表

以下是使用 Java 在 PowerPoint 演示文稿中創建直方圖的步驟。

以下代碼示例顯示瞭如何使用 Java 創建直方圖圖表。

// 創建一個新的演示文稿
Presentation pres = new Presentation();
try {
    
    // 添加一個新的直方圖圖表並清除其類別和系列
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Histogram, 50, 50, 500, 400);
    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    // 訪問圖表數據
    IChartDataWorkbook wb = chart.getChartData().getChartDataWorkbook();
    wb.clear(0);

    // 添加系列
    IChartSeries series = chart.getChartData().getSeries().add(ChartType.Histogram);
    series.getDataPoints().addDataPointForHistogramSeries(wb.getCell(0, "A1", 15));
    series.getDataPoints().addDataPointForHistogramSeries(wb.getCell(0, "A2", -41));
    series.getDataPoints().addDataPointForHistogramSeries(wb.getCell(0, "A3", 16));
    series.getDataPoints().addDataPointForHistogramSeries(wb.getCell(0, "A4", 10));
    series.getDataPoints().addDataPointForHistogramSeries(wb.getCell(0, "A5", -23));
    series.getDataPoints().addDataPointForHistogramSeries(wb.getCell(0, "A6", 16));

    chart.getAxes().getHorizontalAxis().setAggregationType(AxisAggregationType.Automatic);

    // 保存演示文稿
    pres.save("histogram-chart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

下面是創建的柱狀圖圖表的截圖。

在 C# 中的 powerpoint 中創建直方圖圖表

使用 Java 在 PowerPoint 中創建股票圖表

股票圖表也是 PowerPoint 演示文稿中常用的圖表類型之一。以下是在 Java 中創建股票圖表的步驟。

  • 創建 Presentation 類的實例。
  • 通過提供索引獲取幻燈片的引用。
  • 添加具有默認數據以及類型 ChartType.OpenHighLowClose 的圖表。
  • 訪問 IChartDataWorkbook 對像中的圖表數據。
  • 清除默認系列和類別。
  • 添加新系列和類別。
  • 為圖表系列添加新的圖表數據。
  • 指定 HiLowLines 格式。
  • 使用 Presentation.save(String, SaveFormat) 方法保存演示文稿。

以下代碼示例顯示如何使用 C# 將股票圖表添加到 PowerPoint 演示文稿。

// 創建一個新的演示文稿
Presentation pres = new Presentation();
try {
    
    // 添加圖表
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.OpenHighLowClose, 50, 50, 600, 400, false);

    // 清除類別和系列
    chart.getChartData().getSeries().clear();
    chart.getChartData().getCategories().clear();

    // 訪問圖表數據
    IChartDataWorkbook wb = chart.getChartData().getChartDataWorkbook();

    // 添加類別
    chart.getChartData().getCategories().add(wb.getCell(0, 1, 0, "A"));
    chart.getChartData().getCategories().add(wb.getCell(0, 2, 0, "B"));
    chart.getChartData().getCategories().add(wb.getCell(0, 3, 0, "C"));

    chart.getChartData().getSeries().add(wb.getCell(0, 0, 1, "Open"), chart.getType());
    chart.getChartData().getSeries().add(wb.getCell(0, 0, 2, "High"), chart.getType());
    chart.getChartData().getSeries().add(wb.getCell(0, 0, 3, "Low"), chart.getType());
    chart.getChartData().getSeries().add(wb.getCell(0, 0, 4, "Close"), chart.getType());

    // 添加系列數據
    IChartSeries series = chart.getChartData().getSeries().get_Item(0);

    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 1, 1, 72));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 2, 1, 25));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 3, 1, 38));

    series = chart.getChartData().getSeries().get_Item(1);
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 1, 2, 172));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 2, 2, 57));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 3, 2, 57));

    series = chart.getChartData().getSeries().get_Item(2);
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 1, 3, 12));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 2, 3, 12));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 3, 3, 13));

    series = chart.getChartData().getSeries().get_Item(3);
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 1, 4, 25));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 2, 4, 38));
    series.getDataPoints().addDataPointForStockSeries(wb.getCell(0, 3, 4, 50));

    chart.getChartData().getSeriesGroups().get_Item(0).getUpDownBars().setUpDownBars(true);
    chart.getChartData().getSeriesGroups().get_Item(0).getHiLowLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);

   for (IChartSeries ser : chart.getChartData().getSeries())
    {
        ser.getFormat().getLine().getFillFormat().setFillType(FillType.NoFill);
    }

    // 保存演示文稿
    pres.save("output.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

以下是創建的股票圖表的屏幕截圖。

在 C# 中的 powerpoint 中創建股票圖表

更多圖表類型

除了上述圖表之外,您還可以將其他類型的圖表添加到 PowerPoint 演示文稿中。要閱讀有關支持的圖表類型的更多信息,您可以訪問 this 文檔文章。

獲取免費的 API 許可證

您可以獲得免費的臨時許可證,以便在不受評估限制的情況下使用 API。

在線試用

您還可以試用基於 Aspose.Slides 的免費在線工具,用於在 PowerPoint 演示文稿中創建圖表。

結論

在本文中,您學習瞭如何使用 Java 在 PowerPoint 演示文稿中創建圖表。分步指南和代碼示例展示瞭如何添加柱形圖、散點圖、餅圖、直方圖和股票圖。您可以使用 文檔 探索更多關於 Aspose.Slides for Java 的信息。如果您有任何疑問,請通過我們的 論壇 告知我們。

也可以看看