圖表用於總結和直觀地表示演示文稿中的數據。為了可視化數據,MS PowerPoint 提供了多種圖表類型。其中,最常用的圖表類型包括餅圖、折線圖、條形圖、直方圖、股票圖等。在本文中,您將學習如何使用 Java 在 PowerPoint 演示文稿中創建圖表。
- 在 PowerPoint 中創建圖表的 API
- 使用 Java 在 PowerPoint 中創建柱形圖
- 使用 Java 在 PowerPoint 中創建散點圖
- 使用 Java 在 PowerPoint 中添加餅圖
- 使用 Java 在 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();
}
下面是生成的柱形圖的截圖。
使用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();
}
以下屏幕截圖顯示了生成的散點圖。
使用 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();
}
下面是生成的餅圖的截圖。
使用 Java 在 PowerPoint PPTX 中添加直方圖圖表
以下是使用 Java 在 PowerPoint 演示文稿中創建直方圖的步驟。
- 使用 Presentation 類創建新演示文稿或加載現有演示文稿。
- 通過提供索引獲取幻燈片的參考。
- 添加具有默認數據以及類型 ChartType.Histogram 的圖表。
- 訪問 IChartDataWorkbook 對像中的圖表數據。
- 清除默認系列和類別。
- 添加新系列和類別。
- 使用 Presentation.save(String, SaveFormat) 方法保存演示文稿。
以下代碼示例顯示瞭如何使用 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();
}
下面是創建的柱狀圖圖表的截圖。
使用 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();
}
以下是創建的股票圖表的屏幕截圖。
更多圖表類型
除了上述圖表之外,您還可以將其他類型的圖表添加到 PowerPoint 演示文稿中。要閱讀有關支持的圖表類型的更多信息,您可以訪問 this 文檔文章。
獲取免費的 API 許可證
您可以獲得免費的臨時許可證,以便在不受評估限制的情況下使用 API。
在線試用
您還可以試用基於 Aspose.Slides 的免費在線工具,用於在 PowerPoint 演示文稿中創建圖表。
結論
在本文中,您學習瞭如何使用 Java 在 PowerPoint 演示文稿中創建圖表。分步指南和代碼示例展示瞭如何添加柱形圖、散點圖、餅圖、直方圖和股票圖。您可以使用 文檔 探索更多關於 Aspose.Slides for Java 的信息。如果您有任何疑問,請通過我們的 論壇 告知我們。