WQAQ123 2024-06-11 14:41 采纳率: 0%
浏览 60

python调用jojo-office问题

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)
这个里面在excel表格填入数据,导入到PPT模板{Sheet1!A1}{Sheet1!B1},只能是默认第一行数据向下填入,如果PPT模板第一行是不规则的,就无法填入excel数据,就会出现空行,或者错位的情况。这个目前有解决方法吗。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-11 14:41
    关注

    引自免费微信小程序:皆我百晓生

    针对在使用jojo-office库将Excel数据填充到PPT模板时遇到的问题,即当PPT模板的第一行数据布局不规则时,数据填充会出现空行或错位,可以通过更精细地控制数据填充逻辑来解决这一问题。下面是一个详细的解决方案,包括调整代码以适应不规则的数据布局。

    解决方案步骤

    1. 读取Excel数据:首先,确保正确读取Excel文件中的数据,并将其存储在一个可以方便访问的结构中,例如列表或字典。

    2. 分析PPT模板:仔细检查PPT模板,识别哪些位置需要填充数据。这可能需要手动检查模板并记录每个数据点的位置。

    3. 修改数据填充逻辑:根据模板的特定需求调整数据填充代码,确保数据被准确地放置在模板中的正确位置。

    示例代码

    假设我们使用jojo-office库,并且已经安装了所有必要的依赖项。下面是一个示例代码,展示了如何更灵活地处理数据填充:

    from jojo_office import PptxFile
    import openpyxl
    
    # 加载Excel文件
    wb = openpyxl.load_workbook('data.xlsx')
    sheet = wb.active
    
    # 创建一个字典来存储数据
    data_dict = {}
    for row in sheet.iter_rows(values_only=True):
        data_dict[row[0]] = row[1:]
    
    # 加载PPT模板
    pptx = PptxFile('template.pptx')
    
    # 遍历幻灯片并填充数据
    for slide in pptx.slides:
        for shape in slide.shapes:
            if shape.has_text_frame:
                for paragraph in shape.text_frame.paragraphs:
                    for run in paragraph.runs:
                        text = run.text
                        for key, value in data_dict.items():
                            # 检查文本是否包含需要替换的标记
                            if f'{{Sheet1!{key}}}' in text:
                                # 替换标记为实际数据
                                new_text = text.replace(f'{{Sheet1!{key}}}', str(value))
                                run.text = new_text
    
    # 保存修改后的PPT
    pptx.save('output.pptx')
    

    注意事项

    • 在上述代码中,data_dict用于存储从Excel读取的数据,键是Excel单元格的引用,值是对应的数据。
    • 数据填充部分通过查找模板中包含特定标记(如{Sheet1!A1})的文本,并将其替换为实际数据,从而实现了更精确的控制。
    • 确保在运行代码前,Excel文件data.xlsx和PPT模板template.pptx位于正确的路径下。

    通过这种方法,即使模板中的数据布局不规则,也能保证数据正确无误地填充到指定位置。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月11日