Python xlwt : More than 4094 XFs (styles) 解決方法


    對於大量數據寫入excel文件,如果使用了表格樣式而且在循環中定義了樣式,就是產生了easyxf對象,那么最多只能新建4094個對象,

然后會拋出 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()

這樣的代碼,會拋出異常信息.

改成這樣的:

# -*- 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()

就不用擔心異常了.

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM