我目前正在编写一个Python脚本,它使用excel 2 image模块保存Excel文件中的屏幕截图。
我的代码非常简单:
import excel2img
excel2img.export_img(Workpath + "/" + "CB_TEMP.xlsx", "alarm_BB1.png", "Deckblatt", "A2:C20")
不幸的是,我总是得到以下错误消息:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-18-a119e849f4d5> in <module>
----> 1 excel2img.export_img(Workpath + "/" + "CB_TEMP.xlsx", "alarm_BB1.png", "Deckblatt", "A2:C20")
~\anaconda3\lib\site-packages\excel2img\excel2img.py in export_img(fn_excel, fn_image, page, _range)
111
112 # See http://stackoverflow.com/a/42465354/1924207
--> 113 for shape in rng.parent.Shapes: pass
114
115 xlScreen, xlPrinter = 1, 2
~\anaconda3\lib\site-packages\win32com\client\__init__.py in __getattr__(self, attr)
471 args=self._prop_map_get_.get(attr)
472 if args is None:
--> 473 raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))
474 return self._ApplyTypes_(*args)
475
AttributeError: '<win32com.gen_py.Microsoft Excel 16.0 Object Library.Range instance at 0x2460934736048>' object has no attribute 'parent'
我已经尝试了几种变通方法,但都无法让它工作。有时候它会像魔法一样工作,但大多数情况下只有在重启并删除C:/Users/帕特里克/AppData/Temp/gen_py中的数据之后。
我有一种感觉,代码中有一些东西与我之前在函数中使用的win32 com模块冲突,以便将XLSB文件转换为XLSX文件:
def ConvertExcel(excel_filepath, Workpath):
excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
xlsb_doc = excel.Workbooks.Open(os.path.abspath(excel_filepath))
excel_sheets = os.path.abspath(Workpath) + "\\CB_TEMP.xlsx"
xlsb_doc.SaveAs(excel_sheets, 51)
xlsb_doc.Close()
excel.Quit()
del excel
return excel_sheets
也许有人能帮我?
此致帕特里克
1条答案
按热度按时间67up9zun1#
我通过删除excel2img模块修复了此问题。
我写的代码新的xlwings与枕头的工作甚至比在excel2img快: