使用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:使用docx2pdfpyexcel库(跨平台)

安装依赖库:

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-docxopenpyxl配合其他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
  • 跨平台方案可能无法完全保留原始格式
  • 处理大量文件时建议添加异常处理
  • 输出目录需要提前创建

这些方法可以根据实际需求选择使用,对于简单的文档转换,docx2pdfpyexcel是不错的选择;如果需要更精确的格式控制,Windows环境下使用win32com是更好的方案。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐