Changing existing workbook created with openpyxl throws an exception
Created originally on Bitbucket by greger (Greger Cronquist)
I'm using Python 2.7.6 and openpyxl 1.8.1 on Mac OS X 10.9.1. I'm expecting the following to create two xlsx files, one containing '1' in A1 and one containing '1' in A1 and '2' in A2 in the first sheet:
#!python
import openpyxl
wb = openpyxl.Workbook()
ws = wb.get_active_sheet()
ws.cell('A1').value = 1
wb.save('test.xslx')
wb2 = openpyxl.load_workbook('test.xlsx')
ws2 = wb2.get_active_sheet()
ws2.cell('A2').value = 2
wb2.save('test2.xlsx')
At the second save, I get a KeyError with the following traceback:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/workbook.pyc in save(self, filename)
263 save_dump(self, filename)
264 else:
--> 265 save_workbook(self, filename)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/writer/excel.pyc in save_workbook(workbook, filename)
185 """
186 writer = ExcelWriter(workbook)
--> 187 writer.save(filename)
188 return True
189
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/writer/excel.pyc in save(self, filename)
168 """Write data into the archive."""
169 archive = ZipFile(filename, 'w', ZIP_DEFLATED)
--> 170 self.write_data(archive)
171 archive.close()
172
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/writer/excel.pyc in write_data(self, archive)
96 break
97
---> 98 self._write_worksheets(archive, shared_string_table, self.style_writer)
99
100 def _write_string_table(self, archive):
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/writer/excel.pyc in _write_worksheets(self, archive, shared_string_table, style_writer)
126 archive.writestr(PACKAGE_WORKSHEETS + '/sheet%d.xml' % (i + 1),
127 write_worksheet(sheet, shared_string_table,
--> 128 style_writer.get_style_by_hash()))
129 if sheet._charts or sheet._images or sheet.relationships or sheet._comment_count > 0:
130 archive.writestr(PACKAGE_WORKSHEETS +
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/writer/worksheet.pyc in write_worksheet(worksheet, string_table, style_table)
96 write_worksheet_sheetviews(doc, worksheet)
97 tag(doc, 'sheetFormatPr', {'defaultRowHeight': '15'})
---> 98 write_worksheet_cols(doc, worksheet, style_table)
99 write_worksheet_data(doc, worksheet, string_table, style_table)
100 if worksheet.auto_filter:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openpyxl/writer/worksheet.pyc in write_worksheet_cols(doc, worksheet, style_table)
207 col_def['bestFit'] = 'true'
208 if columndimension.style_index:
--> 209 col_def['style'] = str(style_table[hash(columndimension.style_index)])
210 if columndimension.width > 0:
211 col_def['width'] = str(columndimension.width)
KeyError: -8937945243006069197