用Python读取Excel数据在PPT中的创建图表

可视化数据已成为提高演示文稿专业度的关键因素之一。使用Python从Excel读取数据并在PowerPoint幻灯片中创建图表不仅能够极大地简化图表创建过程,还能确保数据的准确性和图表的即时性。通过Python这一桥梁,我们可以轻松实现数据自动化处理和图表生成,进而提升演示文稿的质量和效率。本文将演示如何使用Python读取Excel数据在PPT中创建图表,以及将Excel图表以图片形式插入到幻灯片中。

文章目录

    • 读取Excel数据在PPT中创建图表
    • 将Excel图表以图片形式插入到幻灯片

本文所用的方法需要用到Spire.Presentation for Python和Spire.XLS for Python,PyPI:pip install Spire.Presentation Spire.XLS

申请免费License

读取Excel数据在PPT中创建图表

我们可以通过读取Excel工作表数据,然后在幻灯片中创建一个图表并将读取数据设置为图表的数据,最后进行纵横坐标设置,来实现读取Excel数据在演示文稿中创建图表。
操作步骤示例:

  1. 导入所需模块。
  2. 创建Presentation实例,使用Presentation.SlideSize.Type属性设置幻灯片大小。
  3. 创建Workbook实例,并使用Workbook.LoadFromFile()载入Excel文件。
  4. 使用ISlide.Shapes.AppendChart()方法在默认幻灯片中创建一个图表,并使用IChart.ChartData.Clear(0, 0, 5, 5)方法清除图表的示例数据。
  5. 通过Worksheet.AllocatedRange[].Text读取表头和列头文本,并通过IChart.ChartData[].Text属性将其设置为图表数据的表头和列头。
  6. 遍历工作表的数据行和数据列,使用Worksheet.AllocatedRange[].NumberValue属性读取数据,并通过IChart.ChartData[].NumberValue将其设置为图表数据对应单元格的数据。
  7. 使用IChart.ChartTitle下的属性设置图表标题。
  8. 使用IChart.Series.SeriesLabelIChart.Categories.CategoryLabels设置图表系列和类别对应的单元格范围。
  9. 使用IChart.Series.get_Item().Values设置系列对应的数据单元格范围。
  10. 使用Worksheet.AllocatedRange[].NumberFormat属性读取Excel数据单元格的数字格式,并通过IChart.PrimaryValueAxis.NumberFormat将其设置为图表纵坐标的数字格式。
  11. 设置图表重叠和间隔宽度。
  12. 使用Presentation.SaveToFile()保存演示文稿。
  13. 释放资源。

代码示例

from spire.presentation import Presentation, FileFormat, SlideSizeType, RectangleF, ChartType, ChartStyle, FillFormatType
from spire.xls import Workbook# 创建Presentation实例
presentation = Presentation()# 设置幻灯片尺寸
presentation.SlideSize.Type = SlideSizeType.Screen16x9# 创建Workbook实例
workbook = Workbook()
# 加载Excel文件
workbook.LoadFromFile("示例.xlsx")# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)# 向第一张幻灯片添加图表
rect = RectangleF.FromLTRB(50, 100, presentation.SlideSize.Size.Width - 50, presentation.SlideSize.Size.Height - 50)
slide = presentation.Slides.get_Item(0)
chart = slide.Shapes.AppendChart(ChartType.Area, rect)# 清除默认的虚拟数据
chart.ChartData.Clear(0, 0, 5, 5)# 将工作表的标题列和标题行复制到图表
for i in range(sheet.AllocatedRange.ColumnCount):chart.ChartData[0, i].Text = sheet.AllocatedRange[1, i + 1].Text
for j in range(sheet.AllocatedRange.RowCount - 1):chart.ChartData[j + 1, 0].Text = sheet.AllocatedRange.get_Item(j + 2, 1).Text# 遍历数据行
for k in range(sheet.AllocatedRange.RowCount - 1):# 遍历数据列for l in range(sheet.AllocatedRange.ColumnCount - 1):# 设置图表数据chart.ChartData[k + 1, l + 1].NumberValue = sheet.AllocatedRange[k + 2, l + 2].NumberValue# 设置图表标题
chart.ChartTitle.TextProperties.Text = sheet.Name
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 30
chart.HasTitle = True# 设置系列标签和类别标签
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]
chart.Categories.CategoryLabels = chart.ChartData["A2", "A" + str(sheet.AllocatedRange.RowCount)]# 设置系列值
chart.Series.get_Item(0).Values = chart.ChartData["B2", "B" + str(sheet.AllocatedRange.RowCount)]
chart.Series.get_Item(1).Values = chart.ChartData["C2", "C" + str(sheet.AllocatedRange.RowCount)]# 设置数据轴的数字格式
chart.PrimaryValueAxis.NumberFormat = sheet.AllocatedRange[2, 2].NumberFormat# 设置图表样式
chart.ChartStyle = ChartStyle.Style5# 设置重叠和间距宽度
chart.OverLap = 50
chart.GapWidth = 200# 保存演示文稿
presentation.SaveToFile("output/PresentationChartFromExcelData.pptx", FileFormat.Pptx2019)
presentation.Dispose()
workbook.Dispose()

结果演示文稿
读取Excel数据在PPT中创建图表

将Excel图表以图片形式插入到幻灯片

如果想要将Excel中已有的图表插入到PowerPoint演示文稿,并在最大限度上保持原有格式和外观,可以通过将Excel图表以图片形式插入幻灯片来实现。
操作示例:

  1. 导入所需模块。
  2. 创建Presentation实例,设置幻灯片大小。
  3. 创建Workbook实例,使用Workbook.LoadFromFile()载入Excel文件。
  4. 使用Workbook.Worksheets.get_Item()方法获取第一个工作表。
  5. 使用Workbook.SaveChartAsImage(worksheet, 0).ToArray()方法将工作表中的第一个图表保存为数组,并转换为图片流。
  6. 使用Presentation.Images.AppendStream()方法将图片流作为图片数据嵌入到演示文稿中。
  7. 使用ISlide.Shapes.AppendEmbedImageByImageData()方法将图片插入到幻灯片中。
  8. 使用Presentation.SaveToFile()方法保存演示文稿。
  9. 释放资源。

代码示例

from spire.presentation import Presentation, FileFormat, SlideSizeType, RectangleF, ShapeType, Stream
from spire.xls import Workbook# 创建Presentation实例
presentation = Presentation()# 设置幻灯片尺寸
presentation.SlideSize.Type = SlideSizeType.Screen16x9# 创建Workbook实例
workbook = Workbook()
# 加载Excel文件
workbook.LoadFromFile("示例.xlsx")# 获取第一个工作表
worksheet = workbook.Worksheets.get_Item(0)# 将第一个工作表中的第一个图表保存为图像
imageStream = Stream(workbook.SaveChartAsImage(worksheet, 0).ToArray())# 将图像嵌入到演示文稿中
imageData = presentation.Images.AppendStream(imageStream)# 获取第一张幻灯片
slide = presentation.Slides.get_Item(0)# 向幻灯片添加图像形状
rect = RectangleF.FromLTRB(50, 100, presentation.SlideSize.Size.Width - 50, presentation.SlideSize.Size.Height - 50)
slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, imageData, rect)# 保存演示文稿
presentation.SaveToFile("output/InsertExcelChartToPresentation.pptx", FileFormat.Pptx2019)
presentation.Dispose()
workbook.Dispose()

结果演示文稿
将Excel图表以图片形式插入到幻灯片

本文介绍了如何使用Python读取Excel数据在PowerPoint演示文稿中创建图表,以及将Excel图表以图片形式插入到幻灯片中。

更多演示文稿处理技巧请前往Spire.Presentation for Python教程查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时空自回归模型(STAR)及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 附录 数据预处理 生成时空权重矩阵 一、引言 时空自回归模型(Spatial-Temporal Autoregressive Model,简称 STAR)在分析具有时空特征的数…

【Python养成】:输出两个等腰三角形且平行方向

项目场景: 遇到一个小小的高中小程序题目,有趣就做 了一下,供大家参考。 问题描述 要求使用python编程,实现如下图形。 原因分析: 其实就是 找规律和找空格。先左边后右边。具体解释可以找AI。太简单了没必要亲自讲解…

【C++进阶】map与set的封装实践

文章目录 map和setmapmap的框架迭代器operator()operator--()operator()和operator!()operator*()operator->() insertbegin()end()operator[] ()map的所有代码: set的封装迭代器的封装总结 map和set 通过观察stl的底层我们可以看见,map和set是通过红…

密码学基础---椭圆曲线一文打尽

1.ECC简介及密钥生成 当前公认安全有效的三大类公钥密钥体制分别为基于大数因子分解难题(RSA)、离散对数难题(DSA)和椭圆曲线离散对数(ECC)难题的密码体制。 最初RSA由于其容易理解被广泛运用,但随着计算机性能的提升,要保证RS…

Golang | Leetcode Golang题解之第336题回文对

题目&#xff1a; 题解&#xff1a; // 哈希表实现 class Solution {public List<List<Integer>> palindromePairs(String[] words) {List<List<Integer>> res new ArrayList<>();int n words.length;Map<String, Integer> indices ne…

AIGC:clip-interrogator

文字生成图片是近年来多模态和大模型研究的热门方向&#xff0c;openai提出的CLIP提供了一个方法建立起了图片和文字的联系&#xff0c;但是只能做到给定一张图片选择给定文本语义最相近的那一个&#xff0c;实际项目开发中我们总是需要从一张图片获取描述&#xff0c;clip-int…

高效录制新选择:2024年Windows录屏软件

录屏能帮助我们捕捉屏幕上的精彩瞬间&#xff0c;作为老师可以用来录制课程&#xff0c;作为会议记录员可以用来录制远程会议。那么有什么软件是适合windows录屏的呢&#xff1f;这次我们一起来探讨一下吧。 1.福昕录屏大师 链接&#xff1a;www.foxitsoftware.cn/REC/ 这款软…

什么是链表/双向链表

看csp j选择的时候看到链表题&#xff0c;那就来写一写吧 什么是链表 首先我们知道数组&#xff1a; 链表和数组有点像&#xff0c;他是这样的&#xff1a; 1----->2------->3------->4 链表中每个数据都有一个指针&#xff0c;指着自己的下一项数据是哪一个 比如…

Android高版本抓包总结

方案1 CharlesVirtualXposedJustTrustMe 推荐使用三星手机此方案 VirtualXposed下载链接&#xff1a;https://github.com/android-hacker/VirtualXposed/releases JustTrustMe下载链接&#xff1a;https://github.com/Fuzion24/JustTrustMe/releases/ 下载完成后使用adb命令…

编辑器和工具扩展

https://www.youtube.com/watch?vovpiYkYFlPM ui提示 检查资源的合法性

使用 Ollama 集成 GraphRag.Net:一步步教你如何实现

在当今的技术世界&#xff0c;人工智能 (AI) 正在以惊人的速度发展。对于开发者来说&#xff0c;使用最新的工具和框架来提升工作效率至关重要。而在 AI 领域&#xff0c;GraphRag.Net 作为一个强大的图算法框架&#xff0c;允许我们以高效的方式进行数据处理。同样&#xff0c…

【Java 并发编程】(二) 从对象内存布局开始聊 synchronized

对象的内存布局 首先抛出一个经典面试题: 一个 Object 对象占多大? 这里我用工具打印了出来, 发现是 “16bytes”, 也就是 16B; 为什么? 请继续往下看; 普通对象(除了数组), 由markword, 类型指针, 实例数据(就是对象里的成员), 对齐填充(整个对象大小要能被8B整数, 方便6…

电销机器人引领电销变革

以前电销都是都是通过盲打&#xff0c;现在有了电话机器人的出现&#xff0c;为电销公司带来新的篇章。 我们都知道外呼中心的人员离职率始终居高不下&#xff0c;人员的培训频繁成本很高&#xff0c;外部电话水平参差不齐&#xff0c;服务态度不够稳定等问题&#xff0c;都是难…

基础 - 前端知识体系详解

一、前端三要素 HTML&#xff08;结构&#xff09;&#xff1a; 超文本标记语言&#xff08;Hyper Text Markup Language&#xff09;&#xff0c;决定网页的结构和内容。CSS&#xff08;表现&#xff09;&#xff1a; 层叠样式表&#xff08;Cascading Style Sheets&#xff0…

【Mac】Downie 打开提示试用的解决办法?

前情 我们在使用 Downie 的时候&#xff0c;可能遇到提示试用的问题&#xff0c;如下图所示。 原因 旧版本的 Downie 没有卸载干净导致的。 解决办法 先使用 AppCleaner 卸载掉电脑上的 Downie 旧版本软件&#xff0c;必须使用 AppCleaner 卸载。重新安装 Downie 即可。

如何保证数据不丢失?(死信队列)

死信队列 1、什么是死信 死信通常是消息在特定的场景下表现&#xff1a; 消息被拒绝访问消费者发生异常&#xff0c;超过重试次数消息的Expiration过期时长或者队列TTL过期时间消息队列到达最大容量 maxLength 2、什么是死信队列 只由死信构成的消息队列是死信队列 死信队…

PhpStorm完全配置指南:打造高效PHP开发环境!

Phpstorm环境配置与应用&#xff0c;具体包括安装PhpStorm、配置PHP运行环境、Apache集成、调试和部署等步骤。下面将详细展开每个步骤的具体操作和注意事项。 PhpStorm的下载与安装 下载地址&#xff1a;访问PhpStorm的官网下载地址&#xff0c;选择合适的版本进行下载。建议选…

springboot、spring@JsonAlias(velue)的作用

‌JsonAlias注解用于为字段或参数指定反序列化时的别名。‌‌ 在Java开发中&#xff0c;‌特别是在使用Jackson库进行JSON序列化和反序列化时&#xff0c;‌JsonAlias注解扮演着重要的角色。‌它允许开发者为字段或参数指定一个或多个别名&#xff0c;‌这样在反序列化过程中&…

希尔排序,详细解析(附图解)

1.希尔排序思路 希尔排序是一种基于插入排序的算法&#xff0c;通过将原始数据分成若干个子序列&#xff0c;然后对子序列进行插入排序&#xff0c;逐渐减小子序列的间隔&#xff0c;最后对整个序列进行一次插入排序。 1.分组直接插入排序&#xff0c;目标接近有序--------…

玩机进阶教程-----回读 备份 导出分区来制作线刷包 回读分区的写入与否 修改xml脚本

很多工作室需要将修改好的系统导出来制作线刷包。前面分享过很多制作线刷包类的教程。那么一个机型中有很多分区。那些分区回读后要写入。那些分区不需要写入。强写有可能会导致不开机 不进系统的故障。首先要明白。就算机型全分区导出后在写回去 都不一定可以开机进系统。那么…