为什么不正常工作时添加Oleobject(可能是一个PDF文件)到Excel工作表由xlwings?

smdncfj3  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(141)

环境
操作系统:Win7
Excel 2016 64位
简体中文
xlwings 0.30.5
问题
当我使用下面的代码将PDF文件添加到Excel中时,IconFileName和IconLabel参数完全没有效果,嵌入的PDF变成了一个非常小的点,如果放大点,我可以看到一个没有任何标签文本的白色矩形。
此外,它将在保存Excel到新路径的行中获得错误。

obj = sheet1.api.OLEObjects()
obj.Add(ClassType=None, Filename=os.path.abspath(path), Link=False, DisplayAsIcon=True, IconFileName='test.ico', IconLabel='test')
sheet1.save(os.path.abspath(new_path))

如果使用DisplayAsIcon= False,则PDF将很好地嵌入,但不会显示为图标。它起作用了,可以保存为没有任何错误。

obj.Add(ClassType=None, Filename=os.path.abspath(path), Link=False, DisplayAsIcon=False)

有没有人对DisplayAsIcon有同样的问题?非常感谢。
回溯

File "C:\Users\account\AppData\Roaming\Python\Python37\site-packages\xlwings\main.py", line 1163, in save
self.impl.save(path, password=password)
File "C:\Users\account\AppData\Roaming\Python\Python37\site-packages\xlwings_xlwindows.py", line 895, in save
os.path.realpath(path), FileFormat=file_format, Password=password
File "C:\Users\account\AppData\Roaming\Python\Python37\site-packages\xlwings_xlwindows.py", line 122, in call
v = self.__method(*args, **kwargs)
File "C:\Users\account\AppData\Local\Temp\gen_py\3.7\00020813-0000-0000-C000-000000000046x0x1x9.py", line 46616, in SaveAs
, Local, WorkIdentity)
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '文档未保存。', 'xlmain11.chm', 0, -2146827284), None)

我试着在另一台装有Office 2021和Win10的电脑上做同样的事情。这不会是一个错误,可以保存。无论我选择DisplayAsIcon=True还是False,嵌入的PDF都将显示为具有默认PDF图标和文件名的图标。而且IconFileName和IconLabel参数也完全不起作用。
我需要在指定的计算机中添加在win7 Excel2016中显示为图标的PDF,并为此问题卡住了几个星期。
有什么办法解决吗?
如果有什么想法的话会有很大的帮助。

qlvxas9a

qlvxas9a1#

如果启用DisplayAsIcon

DisplayAsIcon=True

然后你需要包含IconIndex,例如

IconIndex=0

下面的代码示例对我来说工作得很好。

  • 由于设置了Filename,因此ClassType可以省略或设置为None。*
wb.sheets['Sheet1'].api.OLEObjects().Add(
                                         # ClassType="Acrobat.Document.DC",
                                         # ClassType=None,
                                         Filename=r"C:\Temp\Adobe.pdf",
                                         Link=False,
                                         DisplayAsIcon=True,
                                         IconFileName=r"C:\Temp\test.ico",
                                         IconIndex=0,
                                         IconLabel="test"
                                         )

相关问题