office文件格式批量转换工具(个人利用AI开发)——墨涩网
前面搭建AI大模型知识库的时候,本都好多doc格式的文件,但是知识库不支持doc格式,支持新的docx格式,量少的情况下可以通过打开文件另存的方式手动转换,但是文件较多的时候,就必须使用工具批量转换了,我想应该这样的工具在网上有很多,但是结构搜完以后没几个,而且下载要么收费,要么需要破解,于是自己借助Ai,使用Python 开发了一个批量转换office文件格式的小工具,并把它打包做成了exe文件,方便使用。实现了doc转 docx(包括wps格式),xls 转 xlsx,ppt 转pptx。
开发环境
- 编程语言:Python 3.x
- 依赖库:pywin32 (win32com)
- 操作系统:Windows 7/10/11
- 支持办公软件:WPS Office或Microsoft Office
运行截图
核心功能
1. **批量格式转换**
- 支持.doc/.wps → .docx
- 支持.xls → .xlsx
- 支持.ppt → .pptx
2. **递归目录处理**
- 自动遍历指定目录及其所有子目录
- 跳过已为新格式的文件(.docx/.xlsx/.pptx)
3. **实时进度反馈**
- 显示每个文件的转换状态
- 提供详细的错误信息提示
4. **智能统计报表**
- 分类统计成功/失败数量
- 输出格式转换汇总报告
解决的问题
1. **办公文档现代化**
- 自动将旧版办公文档转换为新版OpenXML格式
- 提升文件兼容性和安全性
2. **批处理效率优化**
- 避免人工逐个转换的低效操作
- 支持无人值守批量处理
3. **错误追踪机制**
- 记录转换失败的具体原因
- 显示错误代码和异常信息
4. **系统资源管理**
- 自动关闭Office进程释放资源
- 内置操作间隔防止进程冲突
使用说明
1. 将脚本放置于需要转换的目录
2. 双击运行脚本自动处理
3. 查看终端输出的转换报告
4. 按回车键退出程序
技术特点
- 采用COM组件实现格式转换
- 异常处理保障程序稳定性
- 支持WPS和MS Office双平台
- 详细的日志输出和统计功能
下载地址:
exe文件:https://wwou.lanzoue.com/i4Nf12qsjdla
python源码:https://wwou.lanzoue.com/iLDm82qsjdyd
源码展示
import os
import time
from win32com import client as wc
def convert_doc_to_docx(file_path):
"""将doc/wps转换为docx"""
try:
word = wc.Dispatch("kwps.Application")
doc = word.Documents.Open(file_path)
new_path = os.path.splitext(file_path)[0] + ".docx"
doc.SaveAs(new_path, 16)
doc.Close()
word.Quit()
print(f"已转换:{os.path.basename(file_path)} → {os.path.basename(new_path)}")
return True
except Exception as e:
print(f"转换失败(doc): {os.path.basename(file_path)} - {str(e)}")
return False
finally:
time.sleep(0.5)
def convert_xls_to_xlsx(file_path):
"""将xls转换为xlsx"""
try:
excel = wc.Dispatch("ket.Application")
wb = excel.Workbooks.Open(file_path)
new_path = os.path.splitext(file_path)[0] + ".xlsx"
wb.SaveAs(new_path, 51)
wb.Close()
excel.Quit()
print(f"已转换:{os.path.basename(file_path)} → {os.path.basename(new_path)}")
return True
except Exception as e:
print(f"转换失败(xls): {os.path.basename(file_path)} - {str(e)}")
return False
finally:
time.sleep(0.5)
def convert_ppt_to_pptx(file_path):
"""将ppt转换为pptx"""
try:
ppt = wc.Dispatch("kwpp.Application")
presentation = ppt.Presentations.Open(file_path)
new_path = os.path.splitext(file_path)[0] + ".pptx"
presentation.SaveAs(new_path, 26)
presentation.Close()
ppt.Quit()
print(f"已转换:{os.path.basename(file_path)} → {os.path.basename(new_path)}")
return True
except Exception as e:
print(f"转换失败(ppt)[{file_path}]:{str(e)},错误代码:{e.args[0]}")
return False
finally:
time.sleep(0.5)
def batch_convert(root_folder):
"""遍历目录及子目录"""
stats = {
'doc': {'success': 0, 'fail': 0},
'xls': {'success': 0, 'fail': 0},
'ppt': {'success': 0, 'fail': 0}
}
for foldername, subfolders, filenames in os.walk(root_folder):
for filename in filenames:
file_path = os.path.join(foldername, filename)
ext = os.path.splitext(filename)[1].lower()
result = None
key = None
if ext in ['.docx', '.xlsx', '.pptx']:
continue
if ext in ['.doc', '.wps']:
result = convert_doc_to_docx(file_path)
key = 'doc'
elif ext == '.xls':
result = convert_xls_to_xlsx(file_path)
key = 'xls'
elif ext == '.ppt':
result = convert_ppt_to_pptx(file_path)
key = 'ppt'
if key is not None and result is not None:
if result:
stats[key]['success'] += 1
else:
stats[key]['fail'] += 1
print(f'DEBUG: {filename} 类型={key} 结果={result}')
return stats
if __name__ == "__main__":
current_dir = os.getcwd()
print(f"开始转换当前目录及子目录:{current_dir}")
stats = batch_convert(current_dir)
print("\n转换统计报告:")
total_success = 0
total_fail = 0
for file_type in ['doc', 'xls', 'ppt']:
success = stats[file_type]['success']
fail = stats[file_type]['fail']
total_success += success
total_fail += fail
print(f"{file_type.upper()}文件:成功 {success} 个,失败 {fail} 个")
print(f"\n总计:成功 {total_success} 个,失败 {total_fail} 个")
input("按回车键退出...")
print("转换完成!")
版权声明:本文采用知识共享 署名4.0国际许可协议BY-NC-SA 进行授权
文章作者:<墨涩>
文章链接:
免责声明:本站为资源分享站,所有资源信息均来自网络,您必须在下载后的24个小时之内从您的电脑中彻底删除上述内容;版权争议与本站无关,所有资源仅供学习参考研究目的,如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
本站为非盈利性站点,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。
THE END