Python嵌套for循环以创建Excel工作表

时间:2015-04-13 18:35:11

标签: python loops xlsxwriter

我正在使用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。

3 个答案:

答案 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

谢谢大家! 这解决了问题