100个服装款的PPT商品详情页幻灯片,用这三步1分钟搞定
评论
收藏

100个服装款的PPT商品详情页幻灯片,用这三步1分钟搞定

经验分享
掌心向暖
2026-04-08 13:41·浏览量:89
掌心向暖
影刀中级开发者
发布于 2026-04-08 13:4189浏览

这是一个朋友PPT商品详情页自动化的需求,它的场景是这样的:手上100多个服装款,每个款都要做一页商品详情页。信息分散在Excel里:品牌名称、市场价格、商品规格、材质成分、库存数量……每个款还有一张实物图。

手动做的话,并且是在有PPT模板的情况下,每张幻灯片耗时大概30秒(复制占位符、逐个粘贴商品参数数据、插入图片),100张下来,大概得花1小时左右

算上人工手速波动、偶尔的误操作,实际耗时可能超过1小时。而且这个不是一次性动作,每次上新都要来一遍,

三步搞定:1个Excel表格 + 一个模板PPT文件 + 1条影刀RPA"魔法指令"最快1分多钟就能生成100张幻灯片,效率提升60倍!

一、准备Excel数据表

这是最基础的一步,也是决定成败的一步。表格结构要求见下图

几个关键点:

  • 第一行必须是表头,而且表头名字要和PPT占位符一一对应。

  • 图片路径要写绝对路径,比如 D:\\图片\\001.jpg。代码不认相对路径,也不认文件名,要完整路径。

  • 数据要干净。表头前后不要有空格,单元格不要合并。不规范的数据会导致匹配失败。

一个Excel存100个款的数据,这就是你的"数据源"。

二、制作PPT模板

这一步决定最终PPT长什么样。

1. 核心概念:占位符

PPT模板不是靠"画文本框"做的。你需要在"幻灯片母版"里插入占位符——一种可以被代码识别和替换的特殊框。

2. 具体操作:

1. 打开PPT,点击视图 → 幻灯片母版

2. 删除多余的版式,只保留一个空白版式

3. 设计好页面布局:左边放参数表格,右边放实物图,下方放品牌简介

4. 点击插入占位符 → 文本在需要填数据的位置画框

5. 按 Alt+F10 打开"选择窗格",把占位符重命名为Excel表头名称品牌名称市场价格

6. 图片位置用插入占位符 → 图片

7. 设置好字体、颜色、对齐方式

8. 关闭母版视图,保存为 模板.pptx

3. 关键提醒

§ 一定要用"占位符",不要用普通文本框

§ 占位符名字必须和Excel表头完全一致,多空一个空格都不行

§ 文本占位符默认带项目符号,记得在母版里手动取消(开始 → 项目符号 → 无)

模板只做一次,后面100个款都用这一个样式。

三、影刀RPA"魔法指令"

这一步是自动化的核心。在本案例中,我并没有用影刀内置的PPT处理指令来搭建,

这是因为:影刀RPA目前相关指令数量少,场景支持有限,无法处理复杂排版需求、往往需要多条指令搭配才能解决一个问题。

我利用了影刀支持Python代码嵌入的特性,直接调用python-pptx库来实现。

# 使用此指令前,请确保安装必要的Python库: 
# pip install python-pptx pandas openpyxl

import pandas as pd
from pptx import Presentation
from pptx.util import Pt
from typing import *
try:
    from xbot.app.logging import trace as print
except:
    from xbot import print

def generate_ppt_from_excel(excel_path: str, template_path: str, output_path: str) -> str:
    """
    title: 基于模板批量生成商品PPT(富文本精修版)
    description: 自动匹配占位符并填充。支持特定字段("品牌简介"、"产品卖点")实现标题加粗+正文常规的富文本混合排版。
    inputs: 
        - excel_path (str): 包含商品数据的Excel文件绝对路径
        - template_path (str): 制作好的PPT模板文件绝对路径
        - output_path (str): 最终生成的PPT保存路径
    outputs: 
        - result_msg (str): 执行结果提示信息
    """
    if template_path == output_path:
        raise Exception("【路径错误】输出路径不能和模板路径相同,否则会覆盖您的模板!")
    
    # 1. 读取并清洗Excel数据
    print(f"正在读取Excel文件:{excel_path}")
    df = pd.read_excel(excel_path)
    df = df.fillna("") 
    df.columns = df.columns.astype(str).str.strip() 
    
    # 2. 内存流加载PPT模板,防锁死
    with open(template_path, "rb") as f:
        prs = Presentation(f)
        
    try:
        slide_layout = prs.slide_layouts[0] 
    except IndexError:
        raise Exception("PPT模板中没有找到版式!")
        
    # 3. 建立底层 ID 映射,防丢名
    idx_to_name = {}
    for ph in slide_layout.placeholders:
        idx_to_name[ph.placeholder_format.idx] = ph.name.strip()
        
    count = 0
    # 4. 循环遍历Excel数据并填充
    for index, row in df.iterrows():
        slide = prs.slides.add_slide(slide_layout)
        
        for shape in slide.placeholders:
            shape_name = idx_to_name.get(shape.placeholder_format.idx, shape.name).strip()
            
            if shape_name in df.columns:
                value = str(row[shape_name]).strip()
                if not value:
                    continue 
                
                # 4.1 图片处理
                if "图" in shape_name:
                    try:
                        shape.insert_picture(value)
                    except Exception as e:
                        print(f"⚠️ 第 {index+2} 行插入图片失败,路径:{value}。错误:{e}")
                        
                # 4.2 【富文本特殊处理】:品牌简介 & 产品卖点
                elif shape_name in ["品牌简介", "产品卖点"]:
                    shape.text = ""  # 清空占位符的默认占位文本
                    p = shape.text_frame.paragraphs[0]
                    
                    # 游程1:写入前缀,强制加粗
                    run_prefix = p.add_run()
                    run_prefix.text = f"{shape_name}:"
                    run_prefix.font.bold = True
                    
                    # 游程2:写入正文内容,强制不加粗
                    run_value = p.add_run()
                    run_value.text = value
                    run_value.font.bold = False
                    
                # 4.3 常规文本处理
                else:
                    shape.text = value
                    
        count += 1
        
    # 5. 保存输出
    prs.save(output_path)
    print(f"执行完毕,已保存至:{output_path}")
    
    return f"成功生成了 {count} 页PPT!"

这里大概提一下这个库是干嘛的,Python-pptx是一个专门为PPT操作设计的Python库,可以让你用代码直接操纵PPT文件,实现影刀内置指令做不了的事情。它能:

  • 精确识别和替换占位符

  • 处理排版、字体、颜色等细节

  • 支持富文本混合排版(比如标题加粗+正文常规)

  • 批量生成格式完全一致的PPT文件

感兴趣的铁子可以看看这个文档:https://daobook.github.io/python-pptx/index.html

这个方案的本质是"数据 + 模板 = 批量输出"。只要符合这个逻辑的场景都能用,比如:自动生成数据汇报PPT、直播手卡/商品信息单自动排版等。


往期分享:

收藏2
全部评论1
最新
发布评论
评论