一、背景
最近在给同事通过代码进行拉取数据时,总是以以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.运行代码
仅供想用的同学参考,有不正确的或者不好的地方欢迎指正。