我在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的周期)。第二个不起作用(stylee)。调试我发现C = 1和NumoftestCases = 5。因此,如果C<numoftestcase或1< 5,那么周期应该有效,对吗?
显然没有。我在CMD中获得以下错误输出(对于第二个周期)。
fortraceback(最近的最新电话): 文件",第2行,在 indexError:列表索引超出范围
追溯(最近的最新通话): 文件",第3行,在 TypeError:无法连接'str'和``元组''对象
这有什么问题?我记得这很早以前起作用了。我没有更改循环代码,但现在它不起作用。
我还尝试在第二个周期中的第一行中放置打印(c),而输出只有1个。
没有更多的数字。检查XLS文件,只有第一个周期写在电子表格中。
我将此代码存储在文本文件上,这样我就可以在CMD中需要记住此命令。
首先:索引超出范围:您定义 numoftopcol
至5,即列表的len
,但是在循环之前,您会增加它...现在访问此索引从范围...
错误的根本原因是Excel坐标从1开始,但Python列表为0索引。我会从0
到n
进行循环,并仅添加1个用于xlwt
调用,而不是执行您正在执行的所有+1
工作。
第二:串联错误:您没有发布任何stacktrace,但
strC = str(c),
创建tuple
。下一行:
ws.write(c,0,'TC-'+strC,stylee),
尝试将str
添加到tuple
。
我发现了什么问题。我必须将c
和numoftestcases
的数据类型转换为int。
int(c)
int(numoftestcases)
案例解决了。它现在正在工作。