在 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 天的临时许可证。
 



 
					



