openpyxl 写 excel 文件遇到问题

2021-03-23 15:50:23 +08:00
 vegetableChick

项目使用的是 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模式

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

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

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

1764 次点击
所在节点    Python
2 条回复
omph
2021-03-23 17:56:05 +08:00
不考虑向作者反馈重现一下?
xchaoinfo
2021-03-23 18:23:40 +08:00
写入用 xlsxwriter

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764298

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX