【Python】Excel转图表案例

1.实现思路

  1. Excel 数据读取:

    使用 openpyxl 库加载 Excel 文件,并选择其中一个活动的工作表(通过 load_workbook 方法和 active 属性)。使用 iter_rows() 函数遍历工作表中的行并提取数据,将这些数据存储在 data 列表中。
  2. PowerPoint 文件创建:

    通过 Presentation() 创建一个 PowerPoint 实例。
  3. 幻灯片和标题创建:

    通过 slides.add_slide() 方法添加一张幻灯片,并选择布局(这里选择了标题 + 内容布局)。使用 shapes.title 创建一个标题形状,并将标题文本设置为 '月份和温度图表'。
  4. 图表数据创建:

    使用 CategoryChartData() 创建图表数据对象。将 Excel 中的数据添加到图表数据对象中。此处假设第一列是类别(月份),第二列是温度数据。
  5. 图表创建和布置:

    通过 shapes.add_chart() 在幻灯片上创建图表,指定图表的类型(这里选择了柱状图),位置和尺寸,并使用之前创建的图表数据对象。指定图表的位置和尺寸可以使用 Inches() 函数,这里设置了 x, y, cx, cy 四个参数来确定图表的位置和大小。
  6. 保存 PowerPoint 文件:

    最后通过 presentation.save() 方法保存 PowerPoint 文件,并打印出成功保存的信息。

2.完整代码

from openpyxl import load_workbook
from pptx import Presentation
from pptx.util import Inches
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE

def create_chart_from_excel(excel_filename, pptx_filename):
    try:
        # 加载 Excel 文件
        workbook = load_workbook(excel_filename)
        sheet = workbook.active

        # 提取数据
        data = []
        for row in sheet.iter_rows(values_only=True):
            data.append(row)

        # 创建 PowerPoint 实例
        presentation = Presentation()

        # 创建第一张幻灯片
        slide = presentation.slides.add_slide(presentation.slide_layouts[5])  # 5表示标题 + 内容布局

        # 在幻灯片上创建标题
        title = slide.shapes.title
        title.text = '月份和温度图表'

        # 创建图表数据
        chart_data = CategoryChartData()
        chart_data.categories = [row[0] for row in data[1:]]
        chart_data.add_series('温度', (row[1] for row in data[1:]))

        # 添加图表
        x, y, cx, cy = Inches(1), Inches(1.5), Inches(8), Inches(5)
        chart = slide.shapes.add_chart(
            XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
        ).chart

        # 保存 PowerPoint 文件
        presentation.save(pptx_filename)
        print(f"成功将 {excel_filename} 中的数据表格转换为图表并保存到 {pptx_filename} 中")

    except Exception as e:
        print(f"发生错误: {e}")

# 调用函数并传入文件名
create_chart_from_excel('data.xlsx', '实例.pptx')

3.实现效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a辰龙a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值