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

news2024/9/20 22:24:38

可视化数据已成为提高演示文稿专业度的关键因素之一。使用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.coloradmin.cn/o/2047617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis全解

目录 一, MyBatis 概述 1.1-介绍 MyBatis 的历史和发展 1.2-MyBatis 的特点和优势 1.3-MyBatis 与 JDBC 的对比 1.4-MyBatis 与其他 ORM 框架的对比 二, 快速入门 2.1-环境搭建 2.2-第一个 MyBatis 应用程序 2.3-配置文件详解 (mybatis-config.…

软件需求设计分析报告(Word原件)

第1章 序言 第2章 引言 2.1 项目概述 2.1.1 项目背景 2.1.2 项目目标 2.2 编写目的 2.3 文档约定 2.4 预期读者及阅读建议 第3章 技术要求 3.1 软件开发要求 3.1.1 接口要求 3.1.2 系统专有技术 3.1.3 查询功能 3.1.4 数据安全 3.1.5 可靠性要求 3.1.6 稳定性要求 3.1.7 安全性…

练习:python条件语句、循环语句和函数的综合运用

需求描述: 期望输出效果: 练习成果: #简单的银行业务流程 many 50000 def main_menu():print("----------主菜单----------"f"\n{name}您好,欢迎来到ATM,请选择操作:""\n查询余…

鼠标手势软件,效率办公必备!移动鼠标即可执行命令

鼠标手势软件是一种通过在屏幕上绘制特定手势来触发预设操作或命令的工具,它能够极大地提高用户的操作效率,特别是在进行重复性工作时尤为明显。这类软件通常支持多种手势操作,如拖拽、双击、滚动等,并允许用户自定义手势以适应个…

【Linux】系列入门摘抄笔记-8-权限管理chmod/chown

Linux操作系统中文件的基本权限由9个字符组成,分别为属主、属组和其他用户,用于规定是否对文件有读、写和执行权限。 文件/目录的权限与归属 目录列表中,有9列 第一列:文件类型与权限(共10个字符,分为四组…

RAG完整构建流程-从入门到放弃

RAG完整构建流程 LLM模型缺陷: ​ 知识是有局限性的(缺少垂直领域/非公开知识/数据安全) ​ 知识实时性(训练周期长、成本高) ​ 幻觉问题(模型生成的问题) ​ 方法:Retrieval-Augmented Generation(RAG) ​ 检索&#xff1…

网络安全实训第三天(文件上传、SQL注入漏洞)

1 文件上传漏洞 准备一句话文件wjr.php.png,进入到更换头像的界面,使用BP拦截选择文件的请求 拦截到请求后将wjr.php.png修改为wjr.php,进行转发 由上图可以查看到上传目录为网站目录下的upload/avator,查看是否上传成功 使用时间戳在线工具…

有哪些好用的桌面管理

Fences(适用于Windows): Fences 是一个非常流行的 Windows 桌面组织工具,它允许用户将图标、文件、文件夹等拖放到名为“Fences”的区域中,从而保持桌面的整洁有序。Fences 还支持自动隐藏空白的 Fences,以…

PC端实现语音识别功能

场景需求: 点击录音按钮: 如没有检测到录音设备,提示:“无法找到麦克风设备,请检查设备连接”。如录音设备连接正常:录音按钮变成录制状态,开始录制声音,同时输入框禁止键盘输入。 再…

修改esxi root用户密码

登录vcenter,鼠标右键点击主机,选择主机配置文件------提取主机配置文件 然后对提取的文件输入一个名称清晰容易分辨的名称,如xxx主机修改密码配置文件。 选择顶部的菜单,选择“策略和配置文件” 选择左侧的主机配置文件&#xf…

Oracle导入dmp文件

文章目录 写在前面一、详细知识点1、dmp文件2、导出dmp文件2.1、exp和expdp区别2.2、exp导出操作2.3、expdp导出操作2.4、PL/SQL使用客户端导出2.4.1 特殊说明2.4.2 操作指引 3、导入dmp文件3.1、imp和impdp区别3.2、imp导入操作3.3、impdp导入操作3.4、PL/SQL使用客户端导入 二…

语言无界,沟通无限:2024年翻译软件新趋势

无论是商务洽谈、学术研究、旅游探险,还是日常交流,高效、准确的翻译工具都成为了人们不可或缺的助手。百度翻译在线翻译是我最早接触的翻译工具,这次我们就一起找寻还有哪些好用的翻译工具吧。 1.福晰在线翻译 链接直达>>https://fa…

[4.10]-AutoSAR零基础学习-(SHE)Secure Hardware Extension规范<2>- Memory update protocol

既然已经看到这篇文章&#xff0c;说明开始研究SHE的安全更新协议了&#xff0c;协议具体去看原文吧&#xff0c;下面的工具是自己实现的桌面工具&#xff0c;可以在多平台使用&#xff0c;支持SHE&#xff0f;SHE / SHE_Extend&#xff0c;协议可自行定制。 >总目录<

亚马逊账户运营:揭秘那些你应该知道的坑。

在亚马逊平台上&#xff0c;选品过程与选择竞争对手的策略相似&#xff0c;都需要深思熟虑。许多卖家在选品时&#xff0c;会广泛收集并分析各种数据&#xff0c;但有时过于依赖数据而忽略了产品的实际竞争力和市场适应性。结果&#xff0c;他们可能选中了在理论上很理想&#…

leetcode 885. Spiral Matrix III

题目链接 You start at the cell (rStart, cStart) of an rows x cols grid facing east. The northwest corner is at the first row and column in the grid, and the southeast corner is at the last row and column. You will walk in a clockwise spiral shape to visi…

[算法题]在排序数组中查找元素的第一个和最后一个位置

题目链接: 在排序数组中查找元素的第一个和最后一个位置 二分查找求解, 但是普通版本的二分查找无法求解, 普通版本的二分查找每次根据中点的值与目标值进行区间划分, 但是该题数据为非递减顺序, 所以可能出现如下情况: nums [1, 2, 3, 3, 3, 4, 5, 6] target 3 此时普通版本…

将VAE用于时间序列:生成时间序列的合成数据

变分自编码器(VAEs)是一种生成式人工智能,因其能够创建逼真的图像而备受关注,它们不仅可以应用在图像上&#xff0c;也可以创建时间序列数据。标准VAE可以被改编以捕捉时间序列数据的周期性和顺序模式,然后用于生成合成数据。本文将使用一维卷积层、策略性的步幅选择、灵活的时…

如何开发一款网店后台多开软件?!

什么是网店后台多开软件&#xff1f; 网店后台多开软件指的是能够同时打开多个网店后台的一款软件&#xff0c;即一个软件上可以登录多个网店后台&#xff08;如&#xff1a;拼多多店铺后台、抖店店铺后台、快手小店店铺后台、孔网店铺后台、微店店铺后台、小红书店铺后台等等…

Leetcode 34. 二分查找 C++实现

Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 问题&#xff1a;给你一个按照非递减顺序排列的整数数组 nums &#xff0c;和一个目标值 target 。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target &#xff0c;返回 [-1, -1]。你…

Python之PyInstaller打包EXE程序(带音乐加图片等资源)

Python之PyInstaller打包EXE程序(带音乐加图片等资源) 要将你的 Python 程序打包成一个可执行文件&#xff08;.exe&#xff09;&#xff0c;并确保图片和音乐文件包含在其中&#xff0c;你可以使用 PyInstaller 工具。下面是一个简单的步骤来打包你的程序&#xff1a; 以我的…