【python】使用xlrd和xlwt实现表格创建、sheet添加、内容存储

最近在编程的过程中,总是涉及将数据存储到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页时,自动存储数据

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值