分享一个批量把excel 文件转换PDF文件的软件,测试过没问题,保存的文件会直接保存到源文件路径,效果如下

下载链接
通过百度网盘分享的文件:选定文件exce…
链接:https://pan.baidu.com/s/1zG9HTQKUCQOXlfQ-o8gqsA?pwd=8e45
复制这段内容打开「百度网盘APP 即可获取」
不定时分享办公批量技巧

软件用到的代码
importos
importtkinterastk
fromtkinterimportfiledialog, messagebox
importwin32com.clientaswin32
defconvert_excel_to_pdf(folder_path):
"""
将选定文件夹中的所有 .xls 和 .xlsx 文件转换为 PDF 文件,
保留所有格式(打印区域、缩放等)。
PDF 文件保存在同一文件夹,文件名与原 Excel 文件相同(扩展名 .pdf)。
"""
# 获取所有 Excel 文件
excel_extensions= ('.xls', '.xlsx')
excel_files= [fforfinos.listdir(folder_path)
iff.lower().endswith(excel_extensions)]
ifnotexcel_files:
messagebox.showwarning("警告", "所选文件夹中没有 Excel 文件(.xls 或 .xlsx)。")
return
# 启动 Excel 应用程序(不可见模式)
excel_app=win32.gencache.EnsureDispatch('Excel.Application')
excel_app.Visible =False
excel_app.DisplayAlerts =False
success_count=0
error_files= []
try:
forfile_nameinexcel_files:
file_path=os.path.join(folder_path, file_name)
# 构建输出 PDF 路径(同一文件夹,扩展名 .pdf)
pdf_name=os.path.splitext(file_name)[0] +".pdf"
pdf_path=os.path.join(folder_path, pdf_name)
print(f"正在转换: {file_name} -> {pdf_name}")
try:
# 打开源工作簿
source_wb=excel_app.Workbooks.Open(file_path)
# 导出为 PDF(Type=0 表示 PDF)
source_wb.ExportAsFixedFormat(0, pdf_path)
source_wb.Close(SaveChanges=False)
success_count+=1
print(f" - 转换成功")
exceptExceptionasinner_e:
print(f" - 转换失败: {inner_e}")
error_files.append(file_name)
# 尝试关闭工作簿(如果已打开)
try:
source_wb.Close(SaveChanges=False)
except:
pass
# 显示转换结果
message=f"转换完成!\n成功: {success_count} 个\n失败: {len(error_files)} 个"
iferror_files:
message+=f"\n失败文件: {', '.join(error_files)}"
messagebox.showinfo("完成", message)
exceptExceptionase:
messagebox.showerror("错误", f"转换过程中出现异常:\n{e}")
finally:
# 退出 Excel 应用程序,释放资源
excel_app.Quit()
delexcel_app
defselect_folder():
"""弹出文件夹选择对话框,并启动转换过程"""
root=tk.Tk()
root.withdraw()
folder_selected=filedialog.askdirectory(title="请选择包含 Excel 文件的文件夹")
iffolder_selected:
convert_excel_to_pdf(folder_selected)
else:
messagebox.showinfo("提示", "未选择文件夹,程序退出。")
夜雨聆风