在 PPT 中使用图表能够直观地展示复杂的信息,提升了演示文稿的效果,让观众能更轻松地抓住重点。直接读取 Excel 数据来生成图表,不仅能简化数据导入步骤,还能保证数据的准确性。此外,若想直接在 PowerPoint 幻灯片里使用 Excel 里的图表,可以直接将它们以图片形式插入到幻灯片中,完美保留原有的格式和风格。本文将介绍如何借助 Spire.Office for .NET 在 C# 程序中使用 Excel 数据轻松创建 PowerPoint 图表。
安装 Spire.Office for .NET
首先,您需要添加 Spire.Office for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.Office
用 Excel 文件数据在 PowerPoint 幻灯片中创建图表
开发者可以使用 Spire.XLS for .NET 从 Excel 工作表中读取数据,然后利用 Spire.Presentation for .NET 将读取的数据作为图表数据源,在 PowerPoint 幻灯片中创建图表。以下是详细操作步骤:
- 创建一个 Presentation 类的实例。
- 创建一个 Workbook 类的实例,并使用 Workbook.LoadFromFile() 方法加载一个 Excel 文件。
- 通过 Presentation.Slides[] 属性获取演示文稿中的第一张幻灯片,并使用 ISlide.Shapes.AppendChart() 方法在该幻灯片中创建一个图表。
- 使用 IChart.ChartData.Clear() 方法清除图表的默认的虚拟数据。
- 通过 Workbook.Worksheets[] 属性获取工作簿中的第一个工作表。
- 遍历工作表中的行,然后是列:
- 使用 Worksheet.AllocatedRange[].Value2 属性获取工作表中的单元格值,并通过 IChart.ChartData[].Value 属性将其设置为图表数据的值。
- 使用 IChart.ChartTitle 属性下的属性设置图表标题。
- 通过 IChart.Series.SeriesLabel 和 IChart.Categories.CategoryLabels 属性设置图表系列标签和类别标签。
- 通过 IChart.Series[].Values 属性设置图表系列的值。
- 通过 IChart.PrimaryCategoryAxis.NumberFormat 和 IChart.PrimaryValueAxis.NumberFormat 属性设置轴的数字格式。
- 通过 IChart.ChartStyle 属性设置图表的样式。
- 使用 Presentation.SaveToFile() 方法保存演示文稿。
- C#
using Spire.Presentation;
using Spire.Presentation.Charts;
using Spire.Xls;
using System.Drawing;
using FileFormat = Spire.Presentation.FileFormat;
using IChart = Spire.Presentation.Charts.IChart;
namespace PresentationChartExcelData
{
class Program
{
public static void Main(string[] args)
{
// 创建Presentation类的实例
Presentation presentation = new Presentation();
// 设置幻灯片尺寸
presentation.SlideSize.Type = SlideSizeType.Screen16x9;
// 创建Workbook类的实例并加载Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 获取工作簿中的第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 在演示文稿中创建图表
RectangleF rect = new RectangleF(50, 100, presentation.SlideSize.Size.Width - 100, presentation.SlideSize.Size.Height - 150);
ISlide slide = presentation.Slides[0];
IChart chart = slide.Shapes.AppendChart(ChartType.ColumnClustered, rect);
// 清除默认的虚拟数据
chart.ChartData.Clear(0, 0, 5, 5);
// 遍历工作表中的行
for (int i = 0; i < sheet.AllocatedRange.RowCount; i++)
{
// 遍历工作表中的列
for (int j = 0; j < sheet.AllocatedRange.ColumnCount; j++)
{
// 将工作表中的单元格值设置为图表数据的值
chart.ChartData[i, j].Value = sheet.AllocatedRange[i + 1, j + 1].Value2;
// 复制数字格式
chart.ChartData[i, j].NumberFormat = sheet.AllocatedRange[i + 1, j + 1].NumberFormat;
}
}
// 设置图表标题
chart.ChartTitle.TextProperties.Text = sheet.Name;
chart.ChartTitle.TextProperties.IsCentered = true;
chart.ChartTitle.Height = 25;
chart.HasTitle = true;
// 设置系列标签和类别标签
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
chart.Categories.CategoryLabels = chart.ChartData["A2", "A" + sheet.AllocatedRange.RowCount];
// 设置系列值
chart.Series[0].Values = chart.ChartData["B2", "B" + sheet.AllocatedRange.RowCount];
chart.Series[1].Values = chart.ChartData["C2", "C" + sheet.AllocatedRange.RowCount];
// 设置轴的数字格式
chart.PrimaryCategoryAxis.NumberFormat = sheet.AllocatedRange["A2"].NumberFormat;
chart.PrimaryValueAxis.NumberFormat = sheet.AllocatedRange["B2"].NumberFormat;
// 设置图表样式
chart.ChartStyle = ChartStyle.Style2;
// 设置重叠和间隔宽度
chart.OverLap = 50;
chart.GapWidth = 200;
// 保存演示文稿
presentation.SaveToFile("output/Excel数据创建PPT图表.pptx", FileFormat.Pptx2019);
presentation.Dispose();
workbook.Dispose();
}
}
}
将 Excel 中的图表以图片形式插入 PowerPoint 幻灯片
如果需要在保持外观和格式不变的情况下将 Excel 工作表中现有的图表插入到 PowerPoint 幻灯片中,可以先使用 Workbook.SaveChartAsImage() 方法将 Excel 图表保存为图像数据,然后将该其添加到幻灯片中。具体步骤如下:
- 创建一个 Presentation 类的实例。
- 创建一个 Workbook 类的实例,并使用 Workbook.LoadFromFile() 方法加载一个 Excel 文件。
- 使用 Workbook.SaveChartAsImage() 方法将工作表中的图表保存为图像。
- 使用 Presentation.Images.Append() 方法将图像嵌入到演示文稿中。
- 使用 Presentation.Slides[].AppendEmbedImage() 方法将图像添加到幻灯片中。
- 使用 Presentation.SaveToFile() 方法保存演示文稿。
- C#
using Spire.Presentation;
using Spire.Presentation.Drawing;
using Spire.Xls;
using System.Drawing;
using FileFormat = Spire.Presentation.FileFormat;
namespace PresentationChartExcelChart
{
class Program
{
public static void Main(string[] args)
{
// 创建Presentation类的实例
Presentation presentation = new Presentation();
// 设置幻灯片尺寸
presentation.SlideSize.Type = SlideSizeType.Screen16x9;
// 创建Workbook类的实例并加载Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 将工作表中的第一个图表保存为图像
Image image = workbook.SaveChartAsImage(workbook.Worksheets[0], 0);
// 将图像嵌入到演示文稿中
IImageData imageData = presentation.Images.Append(image);
// 将图像添加到第一张幻灯片
RectangleF rect = new RectangleF(50, 120, presentation.SlideSize.Size.Width - 100, presentation.SlideSize.Size.Height - 170);
presentation.Slides[0].Shapes.AppendEmbedImage(ShapeType.Rectangle, imageData, rect);
// 保存演示文稿
presentation.SaveToFile("output/Excel图表插入PPT.pptx", FileFormat.Pptx2019);
presentation.Dispose();
workbook.Dispose();
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。