图表用于总结和直观地表示演示文稿中的数据。为了可视化数据,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));
// 在新版本中无法使用
// 添加新点并设置扇区颜色
// 系列.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。
在线试用
您还可以尝试在 PowerPoint 演示文稿中创建图表的免费在线工具,该工具基于 Aspose.Slides。
结论
在本文中,您学习了如何使用 Java 在 PowerPoint 演示文稿中创建图表。分步指南和代码示例展示了如何添加柱形图、散点图、饼图、直方图和股票图。您可以使用 documentation 探索更多关于 Aspose.Slides for Java 的信息。如果您有任何疑问,请通过我们的 论坛 通知我们。