乐于分享
好东西不私藏

【软件分享】免安装-所有工作簿批量转换pdf文件

【软件分享】免安装-所有工作簿批量转换pdf文件

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

下载链接

通过百度网盘分享的文件:选定文件exce…

链接:https://pan.baidu.com/s/1zG9HTQKUCQOXlfQ-o8gqsA?pwd=8e45 

复制这段内容打开「百度网盘APP 即可获取」

已关注
关注
重播 分享

不定时分享办公批量技巧

软件用到的代码

importos

importtkinterastk

fromtkinterimportfiledialogmessagebox

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_pathfile_name)

# 构建输出 PDF 路径(同一文件夹,扩展名 .pdf)

pdf_name=os.path.splitext(file_name)[0+".pdf"

pdf_path=os.path.join(folder_pathpdf_name)

print(f"正在转换: {file_name} -> {pdf_name}")

try:

# 打开源工作簿

source_wb=excel_app.Workbooks.Open(file_path)

# 导出为 PDF(Type=0 表示 PDF)

source_wb.ExportAsFixedFormat(0pdf_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("提示""未选择文件夹,程序退出。")