Python循环不起作用(xlwt)

时间:2017-02-28 08:29:58

标签: python excel cmd xlwt

我在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时,我都可以调用此命令。

2 个答案:

答案 0 :(得分:3)

首先:索引超出范围:您将numoftopcol定义为5,这是列表的len,但是在循环之前,您将其递增...现在访问此索引会产生范围...

错误的根本原因是excel坐标从1开始,但python列表是0索引的。我会执行从0n的循环,并仅为xlwt次调用添加1,而不是执行您正在执行的所有+1次操作。

第二:连接错误:你没有发布任何堆栈跟踪,但是

strC = str(c),

创建tuple。下一行:

 ws.write(c,0,'TC-'+strC,stylee),

尝试将str添加到tuple

答案 1 :(得分:0)

我发现了什么问题。我必须将cnumoftestcases的数据类型转换为int。

int(c)
int(numoftestcases)

案件解决了。它现在正在运作。