首页 > 解决方案 > 如何使用 Python 将文件夹中的 .xlsx 批量转换为 PDF?

问题描述

我每季度都有一个非常平凡的任务,我需要将 40 个文件从 XLSX 转换为 PDF。我有一些代码可以将一个文件打印为 pdf 但不能打印多页,并且它不能打印多个文件。我想访问该文件夹,打开 .xlsx 并将它们打印为 pdf。

为了更进一步,我的代码没有,我只想打印两张名为:“Page 1”和“Page 2”的工作表

我已经尝试了一个文件,并且可以使用稍微修改的代码。

import os
from win32com import client
xlApp = client.Dispatch("Excel.Application")

source = r"C:\Users\user1\.spyder-py3\QAR"
output = r"C:\Users\user1\.spyder-py3\QAR"

dir_list = os.listdir(source)
os.chdir(source)

for i in range(len(dir_list)):
    filename = dir_list[i]
    print(filename)
    books = xlApp.Workbooks.Open(filename)

    
    for file in range(len(filename)):
          ws = books.Worksheets[1]
          ws.Visible = 1
          ws.ExportAsFixedFormat(0, filename + '\.pdf')

理想情况下,我希望将文件保存为带有两张纸(第 1 页和第 2 页)的单独 pdf。

我可以打开 Excel 文件或将一个 Excel 保存为一页的 pdf,但似乎无法将它们放在一起。

标签: pythonexcelpdf

解决方案


我可以编写有关如何实现此目的的伪代码。一旦我在笔记本电脑前,我将提供代码块。

第 1 部分 - 遍历一个或多个文件夹并选择每个文件。将文件传递到逻辑的第 2 部分。在这一部分中,将处理过的文件移动到第 1 部分(第一次)将创建的已处理文件夹中。

This code will loop thru open the workbooks in silent mode.

Dim oXL As Application
Set oXL = New Application
oXL.Visible = False

Dim oXLWB As Workbook

For i = 1 To 1
    Set oXLWB = oXL.Workbooks.Open("C:\abc.xlsx")
    Debug.Print oXLWB.Worksheets(1).Name
    oXLWB.Close
Next

oXL.Quit

第 2 部分 - 通过 VBA 以静默模式打开每个文件。根据工作表名称打印选择性工作表。使用 PDF 格式打印此选择性工作表列表(我相信您知道)。在这部分中,如果出现任何错误,请将错误添加到文件名中。显然不要将此文件移动到已处理文件夹并继续前进。

让我知道这是否有意义以及您是否取得了任何进展。祝你好运


推荐阅读