【Python】数据写入Excel(封装后)

一、代码

备注:封装好了(可直接拿去调用)

"""
-*- coding:utf-8 -*-
@Time   :2020/8/20 21:02
@Author :Jarvis
@File   :excel_util.py
@Version:1.0
"""
from typing import List

import xlwt


class ExcelUtil:
    def __init__(self, header_data: List[list]):
        """
        :param header_data: 如下格式
            header_data = [
                [0, '序号'],  # 表格第0列[列序号,此列表头名称]
                [1, '姓名'],  # 表格第1列[列序号,此列表头名称]
                [2, '性别'],
                [3, '爱好'],
                [4, '生日']
            ]
        """
        self.data = header_data

    def write(self, out_file, data_body: List[list], sheet_name='sheet'):
        """
        写入数据
        :param out_file: 保存文件(如:test.xlsx)
        :param data_body: data_body[0]为表格第0行数据  data_body[0][0]为表格第0行第0列单元格值
        :param sheet_name:
        """
        # step1 判断数据正确性(每行列数是否相同)
        count = 0
        for pro in data_body:
            if len(pro) != len(self.data):
                print('data_body数据错误 第{}行(从0开始) 需为{}个元素'.format(count, len(self.data)))
                return False
            count += 1

        # step2 写入数据
        wd = xlwt.Workbook()
        sheet = wd.add_sheet(sheet_name)
        # 表头
        for d in self.data:
            sheet.write(0, d[0], d[1])
        # 表体
        index = 1
        for pro in data_body:
            for d in self.data:
                sheet.write(index, d[0], pro[d[0]])
            index += 1
        wd.save(out_file)


if __name__ == '__main__':
    header = [
        [0, '序号'],
        [1, '姓名'],
        [2, '性别'],
        [3, '爱好'],
        [4, '生日']
    ]

    body = [
        [1, '张三', '', '篮球', '1994-07-23'],
        [2, '李四', '', '足球', '1994-04-03'],
        [3, '王五', '', '兵乓球', '1994-09-13']
    ]

    ExcelUtil(header_data=header).write(out_file='测试.xlsx', data_body=body)

二、效果

生成的Excel

原文地址:https://www.cnblogs.com/danhuai/p/13538291.html