V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
vegetableChick
V2EX  ›  Python

openpyxl 写 excel 文件遇到问题

  •  
  •   vegetableChick · 253 天前 · 887 次点击
    这是一个创建于 253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目使用的是 uwsgi + Django

    from django.http import HttpResponse
    from openpyxl import Workbook, load_workbook
    from openpyxl.writer.excel import save_virtual_workbook
    
    class ExcelTableObj(object):
        def __init__(self, file_name=None, write_only=False):
            if file_name:
                self.file_name = file_name
                self.wb = load_workbook(file_name)
            else:
                self.wb = Workbook(write_only=write_only)
            self.write_only = write_only
    
        def fix_save_excel(self, header, sheet_name, data_lists):
            ws = self.wb.create_sheet(title=sheet_name)
            ws.append(header)
            for data in data_lists:
                ws.append(data)
    
    
    
    # Django view
    excel = ExcelTableObj(write_only=True)
    
    
    try:
        excel.fix_save_excel(title, sheetname, data_lists)
    except Exception as e:
        import traceback as t; t.print_exc()
        logger.error(repr(e))
    
    finally:
        response = HttpResponse(save_virtual_workbook(excel.wb),
                                content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        response['Content-Disposition'] = 'attachment; filename={}'.format(filename)
    
    

    因为 excel 文件很大, 所以使用write_only模式

    • 安装了lxml模块之后, 内存消耗稳定, 但是最后的文件打开异常

    好像 uwsgi+lxml 会影响 openpyxl excel 文件的生成

    • 不安装lxml模块, 内存一直往上涨, 最后文件正常,但是太耗内存

    请大佬帮忙看看原因, 以及可以优化的点, 非常感谢

    感谢之前问题中 @superrichman 大佬的建议

    2 条回复    2021-03-23 18:23:40 +08:00
    omph
        1
    omph   253 天前
    不考虑向作者反馈重现一下?
    xchaoinfo
        2
    xchaoinfo   253 天前 via Android
    写入用 xlsxwriter
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1257 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:44 · PVG 02:44 · LAX 10:44 · JFK 13:44
    ♥ Do have faith in what you're doing.