使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具

简介: 通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把

前言

作为一名程序员学生,我选择在本地实现批量转换 PPT、Excel、Word 为 PDF 文件的工具,是被在线转换平台的 “坑” 给逼出来的。之前帮导师整理课程资料,几百份文件要转 PDF,用在线工具试了个遍:要么免费版只能转 10 页,要么高清转换要充会员,算下来费用都够买杯奶茶了。更离谱的是,上传含实验数据的 Excel 时,总担心信息泄露,毕竟这些数据可能关系到项目成果。而且学校机房网络不稳定,好几次转换到一半卡住,只能重新排队,太耽误时间。如下图,必须得进行vip的充值才能进行pdf的转换操作,对于学生党很不友好的

自己开发本地工具就不一样了,所有文件都在本地处理,隐私安全有保障,也不用受网络和收费限制。批量处理功能还能一键搞定所有文件,省下来的时间我还能多刷两道算法题。

至于为什么用 CodeBuddy 来实现,这得归功于 AI 编程带来的 “开挂” 体验。刚接触文件转换开发时,我光是研究 Python 的python-pptx、openpyxl库的语法就头大,更别说处理多线程、文件路径映射这些复杂逻辑了。但 CodeBuddy 就像身边有个经验丰富的大哥,我只要输入 “批量将 Word 转为 PDF,保留原目录结构”,它就能快速生成代码框架。遇到字体渲染异常、文件损坏等问题,它还能根据报错信息分析原因,给出修复方案,大大减少了调试时间。

使用CodeBuddy进行功能的实现

我们先打开vscode进入到拓展中直接搜索CodeBuddy,点击安装这个插件就行了

我们先在chat模式生成出对应的README文件
对ai说:

我想在想实现一个应用,用来批量转换PPT、Excel、Word为PDF文件工具,请帮我生成详细的README文件

效果如下:

然后我们在Craft模式输入

@README.md 根据文件进行开发

CodeBuddy根据文件内的描述迅速进行程序的生成操作
分析程序架构,创建合适的代码

经过几轮调试,测试如下

代码如下,感兴趣可自行去体验

import os, win32com.client, gc
# Word
def word2Pdf(filePath, words):
    # 如果没有文件则提示后直接退出
    if(len(words)<1):
        print ("\n【无 Word 文件】\n")
        return
    # 开始转换
    print ("\n【开始 Word -> PDF 转换】")
    try:
        print ("打开 Word 进程...")
        word = win32com.client.Dispatch("Word.Application")
        word.Visible = 0
        word.DisplayAlerts = False
        doc = None
        for i in range(len(words)):
            print(i)
            fileName = words[i] # 文件名称
            fromFile = os.path.join(filePath, fileName) # 文件地址
            toFileName = changeSufix2Pdf(fileName) # 生成的文件名称
            toFile = toFileJoin(filePath,toFileName) # 生成的文件地址
            print ("转换:"+fileName+"文件中...")
            # 某文件出错不影响其他文件打印
            try:
                doc = word.Documents.Open(fromFile)
                doc.SaveAs(toFile,17) # 生成的所有 PDF 都会在 PDF 文件夹中
                print ("转换到:"+toFileName+"完成")
            except Exception as e:
                print(e)
            # 关闭 Word 进程
        print ("所有 Word 文件已打印完毕")
        print ("结束 Word 进程...\n")
        doc.Close()
        doc = None
        word.Quit()
        word = None
    except Exception as e:
        print(e)
    finally:
        gc.collect()
# Excel
def excel2Pdf(filePath, excels):
    # 如果没有文件则提示后直接退出
    if(len(excels)<1):
        print ("\n【无 Excel 文件】\n")
        return
    # 开始转换
    print ("\n【开始 Excel -> PDF 转换】")
    try:
        print ("打开 Excel 进程中...")
        excel = win32com.client.Dispatch("Excel.Application")
        excel.Visible = 0
        excel.DisplayAlerts = False
        wb = None
        ws = None
        for i in range(len(excels)):
            print(i)
            fileName = excels[i] # 文件名称
            fromFile = os.path.join(filePath, fileName) # 文件地址
            print ("转换:"+fileName+"文件中...")
            # 某文件出错不影响其他文件打印
            try:
                wb = excel.Workbooks.Open(fromFile)
                for j in range(wb.Worksheets.Count): # 工作表数量,一个工作簿可能有多张工作表
                    toFileName = addWorksheetsOrder(fileName, j+1) # 生成的文件名称
                    toFile = toFileJoin(filePath,toFileName) # 生成的文件地址                    
                    ws = wb.Worksheets(j+1) # 若为[0]则打包后会提示越界
                    ws.PageSetup.Orientation=2 # 设置页面方向,纵向=1,横向=2
                    ws.ExportAsFixedFormat(0,toFile) # 每一张都需要打印
                    print ("转换至:"+toFileName+"文件完成")
            except Exception as e:
                print(e)
        # 关闭 Excel 进程
        print ("所有 Excel 文件已打印完毕")
        print ("结束 Excel 进程中...\n")
        ws = None
        wb.Close()
        wb = None
        excel.Quit()
        excel = None
    except Exception as e:
        print(e)
    finally:
        gc.collect()
# PPT
def ppt2Pdf(filePath, ppts):
    # 如果没有文件则提示后直接退出
    if(len(ppts)<1):
        print ("\n【无 PPT 文件】\n")
        return
    # 开始转换
    print ("\n【开始 PPT -> PDF 转换】")
    try:
        print ("打开 PowerPoint 进程中...")
        powerpoint = win32com.client.Dispatch("PowerPoint.Application")
        ppt = None
        # 某文件出错不影响其他文件打印
        for i in range(len(ppts)):
            print(i)
            fileName = ppts[i] # 文件名称
            fromFile = os.path.join(filePath, fileName) # 文件地址
            toFileName = changeSufix2Pdf(fileName) # 生成的文件名称
            toFile = toFileJoin(filePath,toFileName) # 生成的文件地址
            print ("转换:"+fileName+"文件中...")
            try:
                ppt = powerpoint.Presentations.Open(fromFile,WithWindow=False)
                if ppt.Slides.Count>0:
                    ppt.SaveAs(toFile, 32) # 如果为空则会跳出提示框(暂时没有找到消除办法)
                    print ("转换至:"+toFileName+"文件完成")
                else:
                    print("(错误,发生意外:此文件为空,跳过此文件)")
            except Exception as e:
                print(e)
        # 关闭 PPT 进程
        print ("所有 PPT 文件已打印完毕")
        print ("结束 PowerPoint 进程中...\n")
        ppt.Close()
        ppt = None
        powerpoint.Quit()
        powerpoint = None
    except Exception as e:
        print(e)
    finally:
        gc.collect()
# 修改后缀名
def changeSufix2Pdf(file):
    return file[:file.rfind('.')]+".pdf"
# 添加工作簿序号
def addWorksheetsOrder(file, i):
    return file[:file.rfind('.')]+"_工作表"+str(i)+".pdf"
# 转换地址
def toFileJoin(filePath,file):
    return os.path.join(filePath,'pdf',file[:file.rfind('.')]+".pdf")
# 开始程序
print ("====================程序开始====================")
print ("【程序功能】将目标路径下内所有的 ppt、excel、word 均生成一份对应的 PDF 文件,存在新生成的 pdf 文件夹中(需已经安装office,不包括子文件夹)")
print ("注意:若某 PPT 和 Excel 文件为空,则会出错跳过此文件。若转换 PPT 时间过长,请查看是否有报错窗口等待确认,暂时无法彻底解决 PPT 的窗口问题。在关闭进程过程中,时间可能会较长,十秒左右,请耐心等待。")
filePath = input ("输入目标路径:(若为当前路径:"+os.getcwd()+",请直接回车)\n")
# 目标路径,若没有输入路径则为当前路径
if(filePath==""):
    filePath = os.getcwd()
# 将目标文件夹所有文件归类,转换时只打开一个进程
words = []
ppts = []
excels = []
for fn in os.listdir(filePath):
    if fn.endswith(('.doc', 'docx')):
        words.append(fn)
    if fn.endswith(('.ppt', 'pptx')):
        ppts.append(fn)
    if fn.endswith(('.xls', 'xlsx')):
        excels.append(fn)
# 调用方法
print ("====================开始转换====================")
# 新建 pdf 文件夹,所有生成的 PDF 文件都放在里面
folder = filePath + '\\pdf\\'
if not os.path.exists(folder):
    os.makedirs(folder)
word2Pdf(filePath,words)
excel2Pdf(filePath,excels)
ppt2Pdf(filePath,ppts)
print ("====================转换结束====================")
print ("\n====================程序结束====================")
os.system("pause")

总结

通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把

目录
打赏
0
9
10
1
159
分享
相关文章
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
PDF 转 JPG 图片小工具:CodeBuddy 助力解决转换痛点
在 PDF 转 JPG 的实际应用中,用户普遍面临转换质量差、批量处理效率低、格式兼容性不足以及编程实现困难等痛点。而 CodeBuddy 凭借智能代码生成与优化、实时错误诊断修复、助力代码学习拓展,以及支持多场景适配与个性化定制等强大的 AI 编程能力,精准直击这些难题。使用 CodeBuddy 开发 Python PDF 转 JPG 小工具,能够有效提升转换效率与质量,降低开发门槛和成本,为用户带来高效、优质的文件格式转换体验。
110 16
CodeBuddy实现pdf批量加密
通过 CodeBuddy 实现 PDF 批量加密小工具,有效解决了当前 PDF 加密存在的痛点,为用户提供了一种高效、便捷、低成本的 PDF 加密解决方案。在未来,随着数据安全需求的不断提升,相信 CodeBuddy 将在更多数据处理场景中发挥重要作用,助力用户轻松应对各类信息安全挑战。
90 8
CodeBuddy 开发本地 PDF 转图工具
市场上的 PDF 转图片工具存在收费昂贵、功能有限、隐私安全风险等痛点,而使用 CodeBuddy 实现的本地 PDF 批量转图片工具可以有效解决这些问题。CodeBuddy 的强大编程能力让我们可以快速开发出满足需求的工具,而且工具可以在本地运行,保证了文件的隐私安全。此外,工具还支持批量处理和自定义功能,提高了工作效率。如果你也有 PDF 转图片的需求,不妨尝试使用 CodeBuddy 来实现一个属于自己的工具。
100 11
我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录
我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录
71 17
DeepSeek + Xmind,1分钟自动把pdf/word文档转成思维导图
DeepSeek与Xmind结合,1分钟将PDF、Word文档转换为思维导图。只需四步:上传文档至DeepSeek,请求转换为Markdown格式,保存文件并修改后缀为.md,最后导入Xmind生成思维导图。轻松驾驭复杂文档,适用于学习笔记、工作报告、项目规划等场景,大幅提升效率!
【全自动改PDF名】批量OCR识别提取PDF自定义指定区域内容保存到 Excel 以及根据PDF文件内容的标题来批量重命名
学校和教育机构常需处理成绩单、报名表等PDF文件。通过OCR技术,可自动提取学生信息并录入Excel,便于统计分析和存档管理。本文介绍使用阿里云服务实现批量OCR识别、内容提取、重命名及导出表格的完整步骤,包括开通相关服务、编写代码、部署函数计算和设置自动化触发器等。提供Python示例代码和详细操作指南,帮助用户高效处理PDF文件。 链接: - 百度网盘:[链接](https://pan.baidu.com/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866) - 腾讯网盘:[链接](https://share.weiyun.com/a77jklXK)
557 5
如何根据Excel某列数据为依据分成一个新的工作表
在处理Excel数据时,我们常需要根据列值将数据分到不同的工作表或文件中。本文通过Python和VBA两种方法实现该操作:使用Python的`pandas`库按年级拆分为多个文件,再通过VBA宏按班级生成新的工作表,帮助高效整理复杂数据。
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等