對於大量數據寫入excel文件,若是使用了表格樣式並且在循環中定義了樣式,就是產生了easyxf對象,那麼最多隻能新建4094個對象,oop
而後會拋出 More than 4094 XFs (styles)的異常,對於這種狀況,簡單的解決方案是把樣式定義在循環以外,好比:測試
# -*- coding: utf-8 -*- from xlrd import open_workbook from xlwt import Workbook, easyxf def get_flush(): book = Workbook() sheet = book.add_sheet('test') print 'flush_row_data' in dir(sheet) ## default = easyxf('font: name Arial;') for i in xrange(10000): try: sheet.write(i,1,u'測試' ,easyxf('font: name Arial;')) except: print i raise if (i + 1) % 1000 == 0: book.save('test.xls') book.sace('test.xls') get_flush()
這樣的代碼,會拋出異常信息.spa
改爲這樣的:excel
# -*- coding: utf-8 -*- from xlrd import open_workbook from xlwt import Workbook, easyxf def get_flush(): book = Workbook() sheet = book.add_sheet('test') print 'flush_row_data' in dir(sheet) default = easyxf('font: name Arial;') # define style out the loop will work for i in xrange(10000): try: sheet.write(i,1,u'測試' , default) except: print i raise if (i + 1) % 1000 == 0: book.save('test.xls') book.save('test.xls') get_flush()
就不用擔憂異常了.code