Объекты типа «WindowsPath» не могут быть преобразованы в COM VARIANT - PullRequest
0 голосов
/ 28 марта 2019

У меня есть файл xlsx, который является шаблоном для квитанции. Он содержит изображения и ячейки. Раньше я заходил в файл вручную, обновлял информацию и затем экспортировал в pdf перед отправкой своим клиентам. Я хотел бы иметь возможность конвертировать xlsx в pdf через python, если это возможно.

Моя проблема - никто не показывает учебник, который просто выбирает файл xlsx и меняет его на pdf. Или не приличный видеоурок.

Я пытался заставить openpyxl сохранить его как расширение с расширением .pdf, но я знаю, что это был долгий путь. И я попытался последовать примеру переполнения стека, но это не сработало.

Я продолжаю получать:

File "<COMObject <unknown>>", line 5, in ExportAsFixedFormat 
Objects of type 'WindowsPath' can not be converted to a COM VARIANT

и я довольно застрял.

#this file will open a wb and save it as another file name
#this first part opens a file from a location and makes a copy to another location

from pathlib import Path
from win32com import client

#sets filename and file
file_name = 'After Summer Bookings.xlsx'
dir_path = Path('C:/Users/BOTTL/Desktop/Business')
new_file_name = 'hello.pdf'
new_save_place = Path('C:/Users/BOTTL/Desktop/Business Python')

xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(dir_path / file_name)
ws = books.Worksheets[0]
ws.Visible = 1
ws.ExportAsFixedFormat(0, new_save_place / new_file_name)

Я бы хотел, чтобы он открыл файл xlsx, который я назвал After Summer Bookings.xlsx, и сохранил его в виде файла PDF с именем hello.pdf

.

1 Ответ

1 голос
/ 28 марта 2019

Решил сам:)

from pathlib import Path
from win32com import client

#sets filename and file
file_name = 'After Summer Bookings.xlsx'
dir_path = Path('C:/Users/BOTTL/Desktop/Business')
new_file_name = 'hello.pdf'
new_save_place = ('C:/Users/BOTTL/Desktop/Business Python/')
path_and_place = new_save_place + new_file_name

xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(dir_path / file_name)
ws = books.Worksheets[0]
ws.Visible = 1
ws.ExportAsFixedFormat(0,path_and_place)

при объединении местоположения и имени файла мне не понравилось, что я сделал его путем, так что теперь, когда я удалил путь, он работает как сон:)

...