我在Python中有这段代码,应该可以正常工作。
python
import xlwt
#== change variables according to requirements ==#
numoftopcol = 5
numoftestcases = 4
coltext = ['Test Case', 'Test Name', 'Duration', 'Factual Result', 'Result (Pass/Fail)']
testN = ['void','Get Counter Result', 'Read Stats', 'Client Initialization', 'Start Server']
#== change variables according to requirements ==#
styleH = xlwt.easyxf('font: name Arial, bold on, color-index blue;')
styleH.font.height = 400
stylee = xlwt.easyxf('font: name Arial')
wb = xlwt.Workbook()
ws = wb.add_sheet('Test Case Overview')
c = 0
numoftopcol += 1
for c in range(c,numoftopcol):
ws.write(0, c, coltext[c], styleH),
ws.col(c).width = 7000
import random
c = 1
numoftestcases += 1
for c in range(c,numoftestcases):
strC = str(c),
ws.write(c,0,'TC-'+strC,stylee),
ws.write(c,1,testN[c],stylee),
ws.write(c,2,'DUR',stylee),
ws.write(c,3,'RandomStr',stylee),
randomint = random.randint(0,1),
if randomint == 0:
ws.write(c,4,'PASS',stylee)
else:
ws.write(c,4,'FAIL',stylee)
现在,第一个循环正常工作(带有styleH的循环)。第二个不起作用(样式)。调试我发现,c = 1和numoftestcases = 5。所以如果c< numoftestcases或1< 5,然后循环应该正常工作,对吗?
显然它没有。我在cmd中得到以下错误输出(第二个循环)。
forTraceback(最近一次调用最后一次): 文件“”,第2行,in IndexError:列表索引超出范围
追踪(最近一次通话): 文件“”,第3行,in TypeError:无法连接'str'和'tuple'对象
这有什么问题? 我记得早些时候这工作了。我没有更改循环代码,但现在它无法正常工作。
我还尝试在第二个周期的第一行放置一个打印(c),输出只有1.没有更多的数字跟随。
检查xls文件时,只在电子表格中写入了第一个循环。
我将此代码存储在一个文本文件中,因此每当我需要cmd时,我都可以调用此命令。
答案 0 :(得分:3)
首先:索引超出范围:您将numoftopcol
定义为5,这是列表的len
,但是在循环之前,您将其递增...现在访问此索引会产生范围...
错误的根本原因是excel坐标从1开始,但python列表是0索引的。我会执行从0
到n
的循环,并仅为xlwt
次调用添加1,而不是执行您正在执行的所有+1
次操作。
第二:连接错误:你没有发布任何堆栈跟踪,但是
strC = str(c),
创建tuple
。下一行:
ws.write(c,0,'TC-'+strC,stylee),
尝试将str
添加到tuple
。
答案 1 :(得分:0)
我发现了什么问题。我必须将c
和numoftestcases
的数据类型转换为int。
int(c)
int(numoftestcases)
案件解决了。它现在正在运作。