将list中的值写入表格中

一、背景
最近在给同事通过代码进行拉取数据时,总是以以list或者dict为最后结果。很不利于同事数据的后续处理,故增加写入文件的过程。
二、
1.代码结构说明
本代码主要是利用xlwt和xlrd对EXCEL进行读写
三个函数
(1)函数一:创建xls文件,并写入列名
xlwt的add_sheet创建表单,并把元组的值传给首行
(2)函数二和函数三类似
函数二:在已有的文件中,写入列表的值
函数三:在已有的文件中,写入字典的值
打开文件-复制文件内容-写入文件-保存文件
2.代码

import xlwt
import xlrd
import xlutils.copy

def creat_execel_write_col_name(col_name_tuple,save_path,sheet_name = "sheet0"):
    """
    功能:实现新建sheet页,并首行进行赋值(列名)
    :param sheet_name: sheet页自定义名称
    :param col_name_tuple:以元组的形式定义 首行字段名
    :param save_path:文件存储路径
    :return:
    """

    #创建book实例:编码格式=utf-8,是否压缩=否
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    #创建表单
    sheet = book.add_sheet(sheet_name, cell_overwrite_ok=True)
    #添加列名
    for i in range(len(col_name_tuple)):
        sheet.write(0, i, col_name_tuple[i])
    #保存sheet页
    book.save(save_path)


def write_execel_datalist(datalist,savepath):
    """
    功能:打开文件,并将[[],[],[]]中每个[]写入文件中
    :param datalist: ["eg0","eg1","eg2","eg3"]
    :param savepath: 文件存储路径
    :return:
    """

    xls = xlrd.open_workbook(savepath, formatting_info=True)
    #获取原数据
    wbook = xlutils.copy.copy(xls)
    wsheet = wbook.get_sheet(0)
    #print(xls.sheets())
    #获取表格内容
    table = xls.sheets()[0]
    #获取当前文件内容的行数和列数
    nrows = table.nrows
    ncols = table.ncols

    # 写入数据
    for i in range(len(datalist)):
        data = datalist[i]
        for j in range(0,ncols):
            wsheet.write(nrows, j, data[j])
        nrows +=1
    wbook.save(savepath)

def write_execel_datadictlist(datadictlist,savepath):
    """
    功能:打开文件,并将[{},{},{}]中每一个{}写入表中
    :param datadictlist: [{1,2,3},{"one","two","three"},{"一","二","三"}]
    :param savepath: 文件名
    :return:
    """

    xls = xlrd.open_workbook(savepath, formatting_info=True)
    #获取原数据
    wbook = xlutils.copy.copy(xls)
    wsheet = wbook.get_sheet(0)

    #获取表格内容和总行数和总列数
    table = xls.sheets()[0]
    nrows = table.nrows
    ncols = table.ncols

    # 写入数据
    for i in range(len(datadictlist)):
        datadict_values = list(datadictlist[i].values())
        for j in range(0,ncols):
            wsheet.write(nrows, j, datadict_values[j])
        nrows +=1
    wbook.save(savepath) 


if __name__ == "__main__":
    save_path = "***/***/这三年.xls"
    sheet_name = "新冠"
    col_name_tuple =("2020","2021","2022")
    datalist = [["原始毒株","德尔塔","奥密克戎"],["发烧","咳嗽","乏力"],["莲花清瘟","布洛芬","大量饮水"]]
    datadictlist =[{1:"one",2:"two",3:"three"},{1:"一",2:"二",3:"三"},{1:"壹",2:"贰",3:"叁"}]
    creat_execel_write_col_name(col_name_tuple,save_path,sheet_name)
    write_execel_datalist(datalist,save_path)
    write_execel_datadictlist(datadictlist, save_path)

3.运行代码

在这里插入图片描述

仅供想用的同学参考,有不正确的或者不好的地方欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值