TypeError descriptors\base.py", line 57, in _convert -- workbook contains chart with bevel
Created originally on Bitbucket by polebridge (rick murphy)
I’m just in my first week of learning Python - i’m not going to suggest a fix :)
Windows 10, Python 3.6.0, openpyxl 3.0.3, Excel2013
wb = openpyxl.load_workbook( wbfile, read_only=False) and the workbook contains a sheet with a chart that has a bevel
TypeError descriptors\base.py", line 57, in _convert
Full traceback: (i added the bit at the end: + ' but got type ' + str(type(value)) )
Traceback (most recent call last):
File "C:\python36\lib\site-packages\openpyxl\descriptors\base.py", line 55, in _convert
value = expected_type(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File ".\chartbug.py", line 39, in <module>
main()
File ".\chartbug.py", line 36, in main
WriteExcel(date,tass,tva)
File ".\chartbug.py", line 11, in WriteExcel
wb = openpyxl.load_workbook( wbfile, read_only=False, keep_vba=True)
File "C:\python36\lib\site-packages\openpyxl\reader\excel.py", line 314, in load_workbook
reader.read()
File "C:\python36\lib\site-packages\openpyxl\reader\excel.py", line 279, in read
self.read_worksheets()
File "C:\python36\lib\site-packages\openpyxl\reader\excel.py", line 254, in read_worksheets
charts, images = find_images(self.archive, rel.target)
File "C:\python36\lib\site-packages\openpyxl\reader\drawings.py", line 39, in find_images
cs = get_rel(archive, deps, rel.id, ChartSpace)
File "C:\python36\lib\site-packages\openpyxl\packaging\relationship.py", line 168, in get_rel
obj = cls.from_tree(tree)
File "C:\python36\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\python36\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\python36\lib\site-packages\openpyxl\chart\plotarea.py", line 140, in from_tree
self = super(PlotArea, cls).from_tree(node)
File "C:\python36\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\python36\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\python36\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\python36\lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
return cls(**attrib)
File "C:\python36\lib\site-packages\openpyxl\drawing\geometry.py", line 312, in init
self.w = w
File "C:\python36\lib\site-packages\openpyxl\descriptors\base.py", line 67, in set
value = _convert(self.expected_type, value)
File "C:\python36\lib\site-packages\openpyxl\descriptors\base.py", line 57, in _convert
raise TypeError('expected ' + str(expected_type) + ' but got type ' + str(type(value)) )
TypeError: expected <class 'int'> but got type <class 'NoneType'>
I removed the bevel from the chart and the code runs as desired.
Attached:
chartbug.py exhibits the bug, change excel filename at top to show working and bug versions of the excel file
chartbug_m.xlsm exhibits the bug. Bevels specified in Sheet “Graphs”, Chart “b”, right-click “Format Plot”, pick the pentagon to get “Effects”, expand “3-D FORMAT”, specify bevels
chartbug.xlsm has the bevels removed, and works ok.
Attachments: chartbug.pychartbug.xlsmchartbug_m.xlsm