最近在编程的过程中,总是涉及将数据存储到EXECEL情况,下面将自己实现的方法进行分析与共享,有瑕疵的地方还请赐教。
一、直接上代码
"""
功能描述:实现execel表中插入数据
涵盖逻辑:
1、对于无文件,自动创建文件,后自动存储数据
2、对于有文件,无sheet页,自动创建sheet页,后自动存储数据
3、对于有文件,有sheet页,自动存储数据
"""
import xlrd,xlwt
from xlutils.copy import copy
import os
def add_new_sheet_or_data(save_file,sheet_name,col_names,data_list):
"""
功能:实现execel多sheet页插入数据
:param save_file:要存储的文件
:param sheet_name:sheet的名字
:param col_names:sheet表的表头
:param data_list:要存储的数据,本例为嵌套list[[1,2,3,4],[11,22,33,44]],每个子list的长度建议与sheet表头对应
:return:
"""
#如果不存在文件,则创建文件以及sheet页
if not os.path.exists(save_file):
table = xlwt.Workbook(encoding= "utf-8")
wbsheet = table.add_sheet(sheet_name, cell_overwrite_ok=True)
if col_names:
for i in range(len(col_names)):
wbsheet.write(0, i, col_names[i],style=xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center'))
row =1
else:
wb = xlrd.open_workbook(save_file)
sheet_names = wb.sheet_names()
table =copy(wb)
# 如果存在文件,但不存在sheet页,则创建sheet页
if sheet_name not in sheet_names:
wbsheet = table.add_sheet(sheet_name)
if col_names:
for i in range(len(col_names)):
wbsheet.write(0, i, col_names[i],style=xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center'))
row = 1
#如果存在文件+sheet页,则直接获取行号
else:
wbsheet = table.get_sheet(sheet_name)
row =len(wbsheet.rows)
for i in range(len(data_list)):
for j in range(len(data_list[i])):
wbsheet.write(row, j, data_list[i][j],style=xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center'))
row += 1
table.save(save_file)
save_file = os.path.dirname(os.path.abspath(__file__))+"/test自动创建表格.xls"
"""
case1:无表
sheet_name = "试用第一次"
col_names = ("字段0","字段1","字段2","字段3")
data_list =[[1,2,3,4],[11,22,33,44]]
"""
"""
case2:有表,无sheet页
sheet_name = "试用第二次"
col_names = ("字段0","字段1","字段2","字段3")
data_list =[[1,2,3,4],[11,22,33,44]]
"""
"""
case3:有表,有sheet页
"""
sheet_name = "试用第二次"
col_names = ("字段0","字段1","字段2","字段3")
data_list =[[6,7,8,9],[66,77,88,99]]
add_new_sheet_or_data(save_file, sheet_name, col_names, data_list)
二、测试代码
(1)当无文档路径的情况下,会自动创建一个文档,并将数据存储到表格中
(2)当有文档,无对应的sheet页时,将自动添加sheet页,并存储
原sheet页无变化,
(3)有文档有sheet页时,自动存储数据文章来源:https://www.toymoban.com/news/detail-655214.html
文章来源地址https://www.toymoban.com/news/detail-655214.html
到了这里,关于【python】使用xlrd和xlwt实现表格创建、sheet添加、内容存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!