美文网首页
封装Django ORM对象写入openpyxl的文件类

封装Django ORM对象写入openpyxl的文件类

作者: ___大鱼___ | 来源:发表于2019-08-27 14:47 被阅读0次
class ExportFile:

    def __init__(self, filename, obj_list, keys_list, verbose_list):
        """
        :param filename:  文件名
        :param obj_list:  对象
        :param keys_list:  key对应对象的每一个字段 
        :param verbose_list: value对应verbose_name excel 第一行的每列表示
        """
        if not hasattr(obj_list[0], 'get'):
            raise AttributeError('请传入ORM字典类型格式 PS: objects values')

        self.filename = filename
        self.obj_list = obj_list
        self.wb = Workbook()
        self.ws = self.wb.active
        self.values_list = verbose_list
        self.key_list = keys_list

    def run(self):
        self.create_row()
        self.create_other_row()

    def create_row(self):
        for col_1 in range(1, len(self.values_list) + 1):
            self.ws.column_dimensions[string.ascii_uppercase[col_1 - 1]].width = 20
            self.ws.cell(row=1, column=col_1).value = self.values_list[col_1 - 1]

    def create_other_row(self):
        row_ = 2
        for obj in self.obj_list:
            for x in range(1, len(self.key_list) + 1):
                self.ws.cell(row_, x).value = obj[self.key_list[x - 1]]
            row_ += 1

    def save(self):
        # 保存
        self.wb.save(self.filename)
        self.wb.close()

相关文章

网友评论

      本文标题:封装Django ORM对象写入openpyxl的文件类

      本文链接:https://www.haomeiwen.com/subject/najeectx.html