批量打印 Excel 到 PDF 的 Python 实现

在日常工作中,有时候需要将多个 Excel 文件批量打印成 PDF 文件。在这种情况下,使用 Python 编写一个脚本可以帮助我们自动化这个过程,节省时间和精力。本文将介绍如何使用 Python 来批量打印 Excel 到 PDF。

准备工作

在开始之前,确保已经安装了以下 Python 库:

  • pandas:用于处理 Excel 文件
  • openpyxl:用于读取 Excel 文件
  • fpdf:用于将 Excel 文件转换为 PDF 文件

你可以使用以下命令来安装这些库:

pip install pandas openpyxl fpdf

实现步骤

1. 读取 Excel 文件

首先,我们需要读取所有要打印的 Excel 文件。假设这些文件都在一个文件夹中,我们可以使用 os 模块来遍历文件夹,并将文件名保存到一个列表中。

import os

excel_folder = 'path_to_excel_folder'
excel_files = [f for f in os.listdir(excel_folder) if f.endswith('.xlsx')]

2. 打印 Excel 到 PDF

接下来,我们可以使用 fpdf 库来将 Excel 文件打印成 PDF 文件。

from fpdf import FPDF
from openpyxl import load_workbook

pdf = FPDF()

for excel_file in excel_files:
    wb = load_workbook(os.path.join(excel_folder, excel_file))
    for sheet in wb.sheetnames:
        pdf.add_page()
        pdf.set_font("Arial", size=12)
        for row in wb[sheet].iter_rows():
            for cell in row:
                pdf.cell(40, 10, str(cell.value), 1)
    pdf.output(os.path.join('output_pdf_folder', excel_file.replace('.xlsx', '.pdf')))

3. 完整代码

将上述代码整合起来,完整的 Python 脚本如下:

import os
from fpdf import FPDF
from openpyxl import load_workbook

excel_folder = 'path_to_excel_folder'
output_pdf_folder = 'path_to_output_pdf_folder'

excel_files = [f for f in os.listdir(excel_folder) if f.endswith('.xlsx')]

pdf = FPDF()

for excel_file in excel_files:
    wb = load_workbook(os.path.join(excel_folder, excel_file))
    for sheet in wb.sheetnames:
        pdf.add_page()
        pdf.set_font("Arial", size=12)
        for row in wb[sheet].iter_rows():
            for cell in row:
                pdf.cell(40, 10, str(cell.value), 1)
    pdf.output(os.path.join(output_pdf_folder, excel_file.replace('.xlsx', '.pdf')))

流程图

flowchart TD
    A[开始]
    B[读取 Excel 文件]
    C[打印 Excel 到 PDF]
    D[结束]
    
    A --> B --> C --> D

状态图

stateDiagram
    [*] --> 读取Excel文件
    读取Excel文件 --> 打印Excel到PDF
    打印Excel到PDF --> [*]

通过上述步骤,我们可以使用 Python 编写一个简单的脚本来批量打印 Excel 文件到 PDF 文件。这样可以极大地提高工作效率,同时也是学习 Python 自动化处理 Excel 的好方法。希望本文对你有所帮助,谢谢阅读!