C#代码实现在PowerPoint中创建组合图表

发布时间:2026/9/1 0:53:38

C#代码实现在PowerPoint中创建组合图表
在 PowerPoint 中组合图表是一种将两种或多种不同图表类型合并到同一图表中的图表形式。它可以在一个图表中展示多组数据使不同变量之间的对比和分析更加直观。在本文中你将学习如何通过编程方式在 PowerPoint 演示文稿中创建组合图表。环境准备在开始之前你需要在 .NET 项目中添加相关组件作为引用。这些组件可以通过下载安装包获取也可以通过 NuGet 进行安装。1PM Install-Package Spire.Presentation在 C# 和 VB.NET 中创建 PowerPoint 组合图表在 PowerPoint 中可以先向幻灯片中添加一种基础图表类型然后将其中某个数据系列更改为另一种图表类型从而实现组合图表的效果。下面是将柱形图与折线图组合的基本步骤创建一个 Presentation 实例。获取指定的幻灯片并向其中添加一个柱形图。创建一个 DataTable 对象并填充数据然后将数据导入到图表中。设置图表标题、分类标签、系列名称以及系列数据。将第二个数据系列的图表类型修改为带数据标记的折线图。将第二个数据系列设置为使用次坐标轴进行绘制。设置次坐标轴的数字格式和网格线样式。保存生成的演示文稿。示例代码如下12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788usingSpire.Presentation;usingSpire.Presentation.Charts;usingSpire.Presentation.Drawing;usingSystem;usingSystem.Data;usingSystem.Drawing;namespaceCombinationChart{classProgram{staticvoidMain(string[] args){// 创建一个 Presentation 实例Presentation presentation newPresentation();// 在第一张幻灯片中添加一个簇状柱形图RectangleF rect newRectangleF(80, 120, 550, 320);IChart chart presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);// 设置并格式化图表标题chart.ChartTitle.TextProperties.Text Monthly Sales Report;// 月度销售报告chart.ChartTitle.TextProperties.IsCentered true;chart.ChartTitle.Height 30;chart.HasTitle true;// 创建一个 DataTable 并添加数据DataTable dataTable newDataTable();dataTable.Columns.Add(newDataColumn(Month, Type.GetType(System.String)));// 月份dataTable.Columns.Add(newDataColumn(Sales, Type.GetType(System.Int32)));// 销售额dataTable.Columns.Add(newDataColumn(Growth rate, Type.GetType(System.Decimal)));// 增长率dataTable.Rows.Add(January, 200, 0.6);dataTable.Rows.Add(February, 250, 0.8);dataTable.Rows.Add(March, 300, 0.6);dataTable.Rows.Add(April, 150, 0.2);dataTable.Rows.Add(May, 200, 0.5);dataTable.Rows.Add(June, 400, 0.9);// 将 DataTable 中的数据导入到图表for(intc 0; c dataTable.Columns.Count; c){chart.ChartData[0, c].Text dataTable.Columns[c].Caption;}for(intr 0; r dataTable.Rows.Count; r){object[] datas dataTable.Rows[r].ItemArray;for(intc 0; c datas.Length; c){chart.ChartData[r 1, c].Value datas[c];}}// 设置系列标签chart.Series.SeriesLabel chart.ChartData[B1,C1];// 设置分类标签chart.Categories.CategoryLabels chart.ChartData[A2,A7];// 为系列赋值chart.Series[0].Values chart.ChartData[B2,B7];chart.Series[1].Values chart.ChartData[C2,C7];// 将第二个系列的图表类型改为带数据标记的折线图chart.Series[1].Type ChartType.LineMarkers;// 将第二个系列绘制在次坐标轴上chart.Series[1].UseSecondAxis true;// 设置次坐标轴的数字格式chart.SecondaryValueAxis.NumberFormat 0%;// 隐藏次坐标轴的网格线chart.SecondaryValueAxis.MajorGridTextLines.FillType FillFormatType.None;// 设置图例位置chart.ChartLegend.Position ChartLegendPositionType.Top;// 设置柱形图重叠比例chart.OverLap -50;// 设置柱间距chart.GapWidth 200;// 保存结果文档presentation.SaveToFile(CombinationChart.pptx, FileFormat.Pptx2010);}}}方法补充要使用 C# 在 PowerPoint 中创建组合图表目前最高效的方式是借助成熟的第三方库它能在几行代码内完成从创建幻灯片、添加图表、填入数据到设置系列类型的全过程。主流方案对比在开始前先简要了解下不同方案的优劣方案优点缺点适用场景Spire.PresentationAPI 简洁可直接修改系列图表类型对组合图表支持极好。商业付费免费版有限制如水印。需要快速、稳定实现功能且项目有相应预算。Aspose.Slides功能强大接口设计良好同样能创建组合图表。商业付费学习曲线相对陡峭。对文档处理有广泛、复杂需求的企业级项目。Open XML SDK官方免费可完全控制底层 XML。复杂度极高需要深入理解 Office 文档结构开发效率低。对依赖项有严格限制、预算为零且愿意投入大量开发时间的场景。Microsoft Office Interop直接操作 Office 应用程序适合自动化。不推荐用于服务器端稳定性差有内存泄露风险。仅限有 Office 环境的客户端自动化脚本。综合来看对于组合图表这类复杂操作使用商业库可以显著提升开发效率和项目稳定性。方法一使用 Spire.Presentation推荐方案Spire.Presentation 是处理该需求最直观的库核心思路是先创建一个基础图表如柱状图再修改特定系列的图表类型生成组合效果。1. 安装 NuGet 包在项目中安装Spire.Presentation。2. 核心代码示例以下示例演示了如何创建一份包含“销售额柱状图”和“增长率折线图”的月度销售报表组合图表。说明为了方便演示下方合并了关键代码模块。实际使用时可按需调整表格数据、图表尺寸和位置。123456789101112131415161718192021222324252627282930313233343536373839404142usingSpire.Presentation;usingSpire.Presentation.Charts;usingSystem.Data;usingSystem.Drawing;namespaceSpireComboChartDemo{classProgram{staticvoidMain(string[] args){// 1. 创建PPT演示文稿实例[reference:8]using(Presentation presentation newPresentation()){// 2. 在幻灯片上添加一个簇状柱状图基础图表[reference:9]RectangleF rect newRectangleF(80, 120, 550, 320);IChart chart presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);// 3. 设置图表标题[reference:10]chart.ChartTitle.TextProperties.Text 月度销售与增长率分析;chart.ChartTitle.TextProperties.IsCentered true;chart.HasTitle true;// 4. 准备并填充图表数据[reference:11]DataTable dataTable newDataTable();dataTable.Columns.Add(月份,typeof(string));dataTable.Columns.Add(销售额(万元),typeof(int));dataTable.Columns.Add(增长率(%),typeof(decimal));dataTable.Rows.Add(一月, 200, 0.6m);dataTable.Rows.Add(二月, 250, 0.8m);// ... 此处可继续添加三月至六月的示例数据 ...// 将数据表内容导入到图表需自行实现数据导入逻辑此处为示意// chart.ChartData.ImportFromDataTable(dataTable, true, 1, 0);// 5. ☝️ 关键步骤将第二个系列“增长率”的图表类型改为折线图[reference:12]chart.Series[1].Type ChartType.Line;// 6. 将第二个系列绘制在次坐标轴上便于对比不同量级的数据[reference:13]chart.Series[1].UseSecondAxis true;// 7. 自定义坐标轴格式可选此处隐藏次坐标轴网格线让图表更清爽[reference:14]chart.SecondaryValueAxis.MajorGridTextLines.FillType FillFormatType.None;// 8. 保存演示文稿[reference:15]presentation.SaveToFile(ComboChartResult.pptx, FileFormat.Pptx2016);}}}}代码解析关键操作在于第 5 步和第 6 步通过修改Series[1].Type将数据系列的类型改为折线图并使用UseSecondAxis将其关联到次坐标轴从而生成一个兼具柱状图和折线图优势的组合视图。方法二使用 Aspose.Slides备选方案Aspose.Slides 是另一款功能强大的专业库同样支持创建组合图表。1. 安装 NuGet 包在项目中安装Aspose.Slides.NET。2. 编写代码基本思路与 Spire 类似通常也是通过AddChart方法添加图表然后访问ChartData.Series集合来设置不同系列的图表类型。12345678910111213// 使用 Aspose.Slides 创建组合图表示例代码结构示意using(Presentation pres newPresentation()){ISlide slide pres.Slides[0];// 添加一个簇状柱状图作为基础IChart chart slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 600, 400);// 获取图表数据工作簿并添加数据...// 将第二个系列的类型修改为折线图chart.ChartData.Series[1].Type ChartType.Line;// 将第二个系列绘制在次坐标轴上chart.ChartData.Series[1].PlotOnSecondAxis true;pres.Save(output.pptx, SaveFormat.Pptx);}方案三Open XML SDK复杂不推荐在开发效率方面Open XML SDK 通常不是首选。它的实现极其复杂你需要手动在底层组装 XML 元素并确保正确建立图表部件与关联的内嵌 Excel 数据源之间的复杂引用关系。即使对于熟练的开发者这一过程也容易出错。如果你仍希望尝试官方文档和 SDK 中的DocumentReflector工具是唯一可行的参考方法。结语总的来说组合图表是一种非常实用的数据可视化方式能够在同一图表中同时展示不同类型的数据从而提升信息表达的清晰度和对比效果。通过本文的示例可以看到在 PowerPoint 中实现柱形图与折线图的组合并不复杂核心思路是先创建基础图表再对特定数据系列调整图表类型并结合次坐标轴来呈现不同量级的数据。整个过程涵盖了数据准备、图表配置以及样式优化等关键步骤不仅可以满足基础的数据展示需求还能通过标题、图例、坐标轴等细节设置提升图表的可读性和专业度。掌握这种方法后你可以根据实际业务场景灵活扩展构建更符合需求的数据可视化效果。

相关新闻

布料缺陷检测数据集:1690张YOLO/VOC双格式标注图像

布料缺陷检测数据集:1690张YOLO/VOC双格式标注图像

2026/9/1 0:53:38

简介:本资源是面向计算机视觉初学者与工业质检算法工程师的布料缺陷检测专用数据集,聚焦破洞与污渍两类典型瑕疵识别任务,适用于YOLO系列、Faster R-CNN等目标检测模型的训练与验证。压缩包共2000个文件,含1690张640640分辨率JPG图…

STM32自制桌面示波器全解析:ADC+DMA与触发波形显示实战

STM32自制桌面示波器全解析:ADC+DMA与触发波形显示实战

2026/9/1 0:53:38

简介:这是一套基于STM32微控制器实现的简易数字示波器完整开发资源,面向计算机科学、人工智能、通信工程、自动化及电子信息等专业的在校学生、青年教师与嵌入式初学者,解决课程设计、毕业设计、实验验证与信号采集分析等典型教学与工程入门需…

基于深度学习的舌苔检测项目全流程复盘与部署实践

基于深度学习的舌苔检测项目全流程复盘与部署实践

2026/9/1 0:43:38

简介:本资源是一套完整的本科毕业设计项目实现——基于深度学习的舌苔图像检测系统,面向人工智能方向初学者与毕设实践者,聚焦中医智能诊断场景中的舌象识别任务。项目采用主流PyTorch框架构建端到端检测流程,涵盖数据预处理、模型…

西门子S120 PROFINET集成:GSDML文件与DI0启停实战全解

西门子S120 PROFINET集成:GSDML文件与DI0启停实战全解

2026/9/1 2:03:41

简介:本资源为西门子S120伺服驱动器CU3X0系列专用GSDML配置文件,面向工业自动化工程师、系统集成商及PLC/运动控制调试人员,解决Profinet或Profibus网络中S120驱动器与上位控制器(如S7-1500、S7-1200)设备识别、参数映…

信用卡套现转借他人,借条为何无效?利息能拿回吗?

信用卡套现转借他人,借条为何无效?利息能拿回吗?

2026/9/1 2:03:41

先说一个可能让很多人大跌眼镜的结论:信用卡套现之后,再把钱转借给亲戚、朋友,哪怕你借条写得再正规、再“漂亮”,约定了高利息、违约金、还款期限,甚至去公证处做了公证,到了法院,大概率一分钱…

携程技术岗笔试复盘:考点拆解与编程题实战经验

携程技术岗笔试复盘:考点拆解与编程题实战经验

2026/9/1 2:03:41

2023年春招季,互联网大厂的笔试来得比往年更早一些。我当时投了携程的技术通用岗,收到第二批笔试通知的时候,其实心里没底——网申到通知之间的时间很紧凑,算法题手感和基础知识的系统梳理都还没到最佳状态。但真正走进笔试环境以…

好未来秋招测试开发岗笔试复盘:考点解析与备考攻略

好未来秋招测试开发岗笔试复盘:考点解析与备考攻略

2026/9/1 2:03:41

看到“2023年好未来秋招测试开发岗第一批笔试”这个标题,我第一反应就是:这又是一场硬仗。好未来的笔试在圈内一直以“范围广、基础深、还有实战味儿”著称,尤其是测试开发岗,它不像纯后端那样只堆算法,也不像纯测试那…

基于STM32与XW12A的触摸按键驱动实战解析

基于STM32与XW12A的触摸按键驱动实战解析

2026/9/1 2:03:41

简介:基于STM32F103ZTE与XW12A触摸按键芯片的程序代码包,面向嵌入式开发者和电子爱好者,解决触摸按键在工程中的快速集成与抗干扰问题。代码包内共2个文件,1个h头文件和1个c源文件,压缩包仅4KB,结构紧凑&am…

嵌入式Linux下RTL8189FS SDIO WiFi驱动移植实战

嵌入式Linux下RTL8189FS SDIO WiFi驱动移植实战

2026/9/1 1:53:41

简介:这是一份针对 RTL8189FS 无线网卡的 Linux 驱动资源包,适用于嵌入式驱动开发、海思平台移植以及 Android/Linux 系统 Wi-Fi 功能调试等场景,面向需要源码级适配的驱动工程师、系统集成人员和有一定 Linux 开发基础的学习者。压缩包共 45…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/1 1:53:39

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/31 7:20:57

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/31 17:18:46

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

远程协作的工作台整理

远程协作的工作台整理

2026/9/1 0:03:36

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/1 0:03:36

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/1 0:03:36

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

远程协作的工作台整理

远程协作的工作台整理

2026/9/1 0:03:36

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/1 0:03:36

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/1 0:03:36

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…