python3往excel表中写数据(可以设置文件目录,文件名称,sheet表头,写入的内容)

1、前述介绍

我在测试一个智能对话项目时需要评估对话的准确率,就设计了一些问题放到excel表中,读取问题并触发问答后把响应信息按需要的数据写入到另外一个excel中。基于这个,我分别写了读excel函数和写excel函数。
写入文件的内容content示例说明:
格式:{key:[[list]]},key为sheet名称,value中的最外层的列表元素为行数据,最内层的list元素为列数据
如:

{
   
   '第1个sheet表':[[1行第1列内容,1行第2列内容, ...,1行第n列内容], [2行第1列内容,2行第2列内容, ...,2行第n列内容], ..., [第m行第1列内容, 第m行第2列内容, ..., 第m行第n列内容]],  
   '第2个sheet表':[[1行第1列内容,1行第2列内容, ...,1行第n列内容], [2行第1列内容,2行第2列内容, ...,2行第n列内容], ..., [第m行第1列内容, 第m行第2列内容, ..., 第m行第n列内容]], 
   ...
   '第n个sheet表':[[1行第1列内容,1行第2列内容, ...,1行第n列内容], [2行第1列内容,2行第2列内容, ...,2行第n列内容], ..., [第m行第1列内容, 第m行第2列内容, ..., 第m行第n列内容]]
}

使用方法、注意事项、参数介绍等均在源码中有注释,不在这里赘述,下面直接看源码。

读excel表文章地址:https://blog.csdn.net/u013478829/article/details/109401459

2、源码

# 写excel文件
def writeExcel(writeExcelPath='', writeExcelName='', sheetHeaders=None, content=None):
    import xlwt, datetime, random, os, time, json
    # 参数说明
    # writeExcelPath  写入文件的绝对路径,如果不指定,默认在当前目录下生成文件,如r"E:\test"
    # writeExcelName   生成的文件名称(aa.xls aa.xlsx),如果不指定或者与路径下的文件名称重复,名称默认为当前时间加随机数字

    # excelHeaders  sheet表的表头信息,必须时列表格式,否则表头为空,顺序为列表中元素的顺序,格式:
    # [[sheet1_h1, sheet1_h2, ..., sheet1_hn], [sheet2_h1, sheet2_h2, ..., sheet2_hn], ...]

    # content   要写入的内容,从第二行开始写入,默认为空,格式支持字典格式和json格式。格式:
    # {sheetname1:[第一行[第一列content1, 第二列content2, ...], 第二行[第一列content3, 第二列content4, ...], ...], ...}

    # 注意1:如果路径中出现转义字符,如\t,\n等,路径前面加r,如 r"E:\test\aa.txt"
    # 注意2:不能往已有文件中写入数据,只能新增一个文件
    # 注意3:如果len(sheetHeaders)大于len(content)会生成部分只有表头的sheet,如果两个相等则生成的sheet都带表头,否则会有部分不带表头

    writeExcelPath = str(writeExcelPath)
    writeExcelName = str(writeExcelName)

    try:
        # 获取当前目录
        currentPath = os.path.dirname(os.path.abspath(__file__))

        # 如果sheetHeaders不是列表,转为列表,并将表头中的数字转为字符串
        if not isinstance(sheetHeaders, list):
            sheetHeaders = [[sheetHeaders]]
        if sheetHeaders == []:
            sheetHeaders = [sheetHeaders]
        sheetHeadersTem = []
        for x in range(0, len(sheetHeaders)):
            tem = sheetHeaders[x]
            if not isinstance(tem, list):
                aa = []
                aa.append(str(tem))
                sheetHeadersTem.append(aa)
            else:
                bb = []
                for temItem in tem:
                    bb.append(str(temItem))
                sheetHeadersTem
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值