zoukankan      html  css  js  c++  java
  • 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()

    就不用担心异常了.

  • 相关阅读:
    Redis的安装与使用
    jQuery操作input值总结
    jquery获得select option的值和对select option的操作
    jsp弹出新窗口代码
    MyEclipse10.0优化
    MyEclipse安装FreeMarker插件
    增强MyEclipse的代码自动提示功能
    PowerDesigner 技巧【3】
    PowerDesigner 快捷键
    PowerDesigner 技巧【2】
  • 原文地址:https://www.cnblogs.com/jaw-crusher/p/3741224.html
Copyright © 2011-2022 走看看