Cannot save a file with comments twice
Created originally on Bitbucket by dipterix (Dipterix)
Source code:
#!python
def _write_worksheets(self):
for idx, ws in enumerate(self.workbook.worksheets, 1):
ws._id = idx
xml = ws._write()
rels_path = get_rels_path(ws.path)[1:]
self._archive.writestr(ws.path[1:], xml)
self.manifest.append(ws)
if ws._drawing:
self._write_drawing(ws._drawing)
for r in ws._rels.Relationship:
if "drawing" in r.Type:
r.Target = ws._drawing.path
if ws._comments:
# Error this line
self._write_comment(ws)
if ws.legacy_drawing is not None:
shape_rel = Relationship(type="vmlDrawing", Id="anysvml",
Target="/" + ws.legacy_drawing)
ws._rels.append(shape_rel)
for t in ws._tables:
self._tables.append(t)
t.id = len(self._tables)
t._write(self._archive)
self.manifest.append(t)
ws._rels[t._rel_id].Target = t.path
if ws._rels:
tree = ws._rels.to_tree()
self._archive.writestr(rels_path, tostring(tree))
Traceback:
wb.save(xlsx_calculated)
File "XXX/python2.7/site-packages/openpyxl/workbook/workbook.py", line 345, in save
save_workbook(self, filename)
File "XXX/python2.7/site-packages/openpyxl/writer/excel.py", line 266, in save_workbook
writer.save(filename)
File "XXX/python2.7/site-packages/openpyxl/writer/excel.py", line 248, in save
self.write_data()
File "XXX/python2.7/site-packages/openpyxl/writer/excel.py", line 81, in write_data
self._write_worksheets()
File "XXX/python2.7/site-packages/openpyxl/writer/excel.py", line 211, in _write_worksheets
self._write_comment(ws)
File "XXX/python2.7/site-packages/openpyxl/writer/excel.py", line 181, in _write_comment
vml = fromstring(self.workbook.vba_archive.read(ws.legacy_drawing))
AttributeError: 'NoneType' object has no attribute 'read'
The error came from -
if ws._comments:
self._write_comment(ws)
I checked my worksheet, ws._comments is []
Sorry I can't provide excel file. But this error pops out when I tried to save the file multiple times. (First time was ok, when saving again, error)