Как мне пакетно конвертировать xlsx в PDF из папки, используя Python - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть довольно приземленная задача ежеквартально, когда мне нужно конвертировать 40 файлов в PDF из XLSX. У меня есть код, который может печатать один файл в формате PDF, но не несколько страниц, и он не может печатать несколько файлов. Я хочу получить доступ к папке, открыть XLSX и распечатать их в формате PDF.

Чтобы продвинуться дальше, а мой код - нет, я хочу напечатать только два листа с именами: «Страница 1» и «Страница 2»

Я был бы благодарен за завершение кодано действительно нужно какое-то направление.

Я пробовал один файл, и он работает со слегка измененным кодом, я немного искал в Интернете, но мог бы действительно помочь.

импорт ОС из win32com-клиента импорта 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 (источник) os.chdir (источник)

для i в диапазоне (len (dir_list)): filename = dir_list [i] print (имя файла) books = xlApp.Workbooks.Open (имя файла)

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

В идеале хотелось бы, чтобы файлы сохранялись в виде отдельных PDF-файлов на двух листах: страница 1 и страница2.

Я могу открыть файлы Excel или сохранить один Excel в формате PDF с одной страницей, но, похоже, не могу собрать его вместе.

Спасибо за любую помощь заранее.

1 Ответ

0 голосов
/ 09 ноября 2019

Я могу написать псевдокод о том, как этого добиться. Как только я окажусь перед ноутбуком, я предоставлю кодовые блоки.

Часть 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 (который, я полагаю, вы знаете). В этой части, в случае любой ошибки, добавьте ошибку к имени файла. Очевидно, не перемещайте этот файл в папку «Обработанные» и двигайтесь дальше.

Дайте мне знать, если это имеет смысл, и если вы добились какого-либо прогресса. Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...