无法将类型为“ WindowsPath”的对象转换为COM VARIANT

时间:2019-03-28 13:21:42

标签: python pdf xlsx win32com

我有一个xlsx文件,它是收据的模板。它包含图像和单元格。我曾经手动进入文件,更新信息,然后导出为pdf,然后再发送给我的客户。如果可能的话,我希望能够通过python将xlsx转换为pdf。

我的问题是没有人显示一个仅选择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)

我希望它打开我称为After Summer Bookings.xlsx的xlsx文件并将其另存为名为hello.pdf的pdf文件

1 个答案:

答案 0 :(得分:1)

自己解决了:)

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)

当连接位置和文件名时,我不喜欢将其设置为路径,因此现在删除路径后,它就像梦一样:)