xlwt 以字典写入_python3利用xlwt模块向excel表中写数据

本文介绍了如何使用Python3的xlwt模块将字典数据写入Excel表格。内容包括不同情况的写入示例,如内容中的sheet数量多于、少于或等于表头中的sheet,以及数据为空、表头为空等情况的处理。同时,文章还展示了格式错误的示例,如目录不存在和内容格式错误。
摘要由CSDN通过智能技术生成

1、前述介绍

我在测试一个智能对话项目时需要评估对话的准确率,就设计了一些问题放到excel表中,读取问题并触发问答后把响应信息按需要的数据写入到另外一个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列内容]]}

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

2、源码

# 写excel文件def writeExcel(writeExcelPath='', writeExcelName='', sheetHeaders=None, content=None):    import xlwt, datetime, random, os, time, json    # 参数说明    # writeExcelPath  写入文件的绝对路径,如果不指定,默认在当前目录下生成文件,如r"E:est"    # 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:如果路径中出现转义字符,如,等,路径前面加r,如 r"E:estaa.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.append(bb)        sheetHeaders = sheetHeadersTem        # 如果conten是json格式,转为字典,否则将提示信息写入到excel的第一个sheet中        if not isinstance(content, dict):            try:                content = json.loads(content)            except:                # return 'content格式不正确,请按格式设置。'                content = {                    '':[                        ["写入的内容格式不正确,写入失败。"],                        ["格式ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值