我正在使用python创建excel表。我正在尝试使用嵌套的for循环来填充电子表格中的一些单元格并且进展不顺利。我想要它做的是给定行列表中的每一行,我希望它在单元格中输入偶数。所以基本上应该看起来像这样: 2 4 6 8 等(每个单元一个值)
但它反而出现了: 24 24 24 24
所有单元格都具有相同的值。
除了明显的格式化问题(我还没有完成格式化部分),它会在每个单元格的嵌套循环中打印最后一个数字。从我的测试来看,它似乎完全执行每个单元格的内循环。如果有帮助,我正在使用XlsWriter。我不知道如何让它停下来。我猜它很明显,但我几年没有做过任何实际的“编程”,所以解决方案就是在逃避我。这是有问题的循环:
for items in purple_rows:
riser_cable.write(items,0,'Company Name',format8)
riser_cable.write(items,1,None,format8)
riser_cable.write(items,2,None,format8)
riser_cable.write(items,3,'Riser',format8)
for i in range(2,26,2):
riser_cable.write(items,4,i,format8)
print(i)
最后3行是造成问题的行。 谢谢你的帮助!
编辑:工作表应该如下http://imgur.com/odSaT2D,但代码目前将整个“端口”列变为24。
答案 0 :(得分:2)
你的专栏:
for i in range(2,26,2):
riser_cable.write(items,4,i,format8)
将所有数字写入同一个单元格。因此,您只能看到最后一个数字24.这是因为项目变量没有增加。尝试
for i,items in enumerate(purple_rows):
riser_cable.write(items,4,(i*2) % 25,format8).
这应该增加项目,并在每一行中添加不同的值。
答案 1 :(得分:1)
python中的循环约定是独占的,因此它从2循环到26,不包括26
否则,你的循环很好
riser_cable.write(items,4,i,format8)
看来你只是用2,4,......,24来更新第4列。您还必须增加列索引
试试这个
for i in range(1,13):
riser_cable.write(items,3+i,i*2,format8)
print(i)
答案 2 :(得分:1)
我想出了这个问题。我最后更改了代码以包含计数,所以它是:
count=0
for items in purple_rows:
count+=2
riser_cable.write(items,4,count,format8)
riser_cable.write(items,10,count,format8)
if count==24:
count=0
谢谢大家! 这解决了问题