手动转PDF格式?Python批量转Word/Excel为PDF,不用逐个另存
·
使用Python批量转换Word/Excel为PDF的方法
方法1:使用win32com库(Windows环境)
安装依赖库:
pip install pywin32
转换Word文档为PDF的代码示例:
import win32com.client
def word_to_pdf(input_path, output_path):
word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(input_path)
doc.SaveAs(output_path, FileFormat=17)
doc.Close()
word.Quit()
转换Excel文件为PDF的代码示例:
def excel_to_pdf(input_path, output_path):
excel = win32com.client.Dispatch("Excel.Application")
workbook = excel.Workbooks.Open(input_path)
workbook.ExportAsFixedFormat(0, output_path)
workbook.Close()
excel.Quit()
方法2:使用docx2pdf和pyexcel库(跨平台)
安装依赖库:
pip install docx2pdf pyexcel pyexcel-xlsx
转换Word文档为PDF:
from docx2pdf import convert
convert("input.docx", "output.pdf")
转换Excel文件为PDF:
import pyexcel as pe
def excel_to_pdf(input_path, output_path):
book = pe.get_book(file_name=input_path)
book.save_as(output_path)
方法3:使用python-docx和openpyxl配合其他PDF生成工具
安装依赖库:
pip install python-docx openpyxl reportlab
使用ReportLab生成PDF的示例:
from reportlab.pdfgen import canvas
def text_to_pdf(text, output_path):
c = canvas.Canvas(output_path)
c.drawString(100, 750, text)
c.save()
批量处理文件的示例代码
处理目录下所有Word文件:
import os
input_dir = "word_files"
output_dir = "pdf_output"
for filename in os.listdir(input_dir):
if filename.endswith(".docx"):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename.replace(".docx", ".pdf"))
convert(input_path, output_path)
处理目录下所有Excel文件:
for filename in os.listdir(input_dir):
if filename.endswith(".xlsx"):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename.replace(".xlsx", ".pdf"))
excel_to_pdf(input_path, output_path)
注意事项
- Windows环境下使用
win32com需要安装Microsoft Office - 跨平台方案可能无法完全保留原始格式
- 处理大量文件时建议添加异常处理
- 输出目录需要提前创建
这些方法可以根据实际需求选择使用,对于简单的文档转换,docx2pdf和pyexcel是不错的选择;如果需要更精确的格式控制,Windows环境下使用win32com是更好的方案。
更多推荐


所有评论(0)