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