python - 如何使用 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,但似乎无法将它们放在一起。
解决方案
我可以编写有关如何实现此目的的伪代码。一旦我在笔记本电脑前,我将提供代码块。
第 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 格式打印此选择性工作表列表(我相信您知道)。在这部分中,如果出现任何错误,请将错误添加到文件名中。显然不要将此文件移动到已处理文件夹并继续前进。
让我知道这是否有意义以及您是否取得了任何进展。祝你好运
推荐阅读
- firebase - 用于准确 AB 测试的激活事件和标志更新频率
- java - 通过迭代二维数组返回一个对象
- c++11 - 如何获取 C++ 的 Bazel 代码覆盖率摘要?
- html - 当光标位于 2 个单元格之间时,表格上的 CSS 悬停效果不会应用 tbody 和 tr 悬停效果
- symfony - 在 Symfony4 中使用 @ParamConverter 时如何处理未找到的异常?
- javascript - 从 JavaScript 访问 C# 列表
- php - Laravel Eloquent - 多表单子查询
- css - 移动分辨率不仅仅是桌面分辨率,但仍然是媒体查询如何呈现移动网站
- ios - 无法在 swift 4 中从 Firebase 存储中检索图像
- php - Laravel 调试器 - 在实现缓存时根据 IP 地址启用/禁用