循环遍历Excel工作表并使用Python将值存储在变量中

时间:2020-06-30 15:29:45

标签: python excel loops for-loop while-loop

由于某些限制,我试图使用python从excel表中读取数据,我无法使用外部库。我正在从Microsoft.Office.Interop导入Excel。现在,我可以通过明确定义数据表来读取它们。喜欢,

x1=ws.Rows[3].Value2[0,0]
y1=ws.Rows[3].Value2[0,1]
z1=ws.Rows[3].value2[0,2]

x2=ws.Rows[4].value2[0,0]
y2=ws.Rows[4].value2[0,1]
z2=ws.Rows[4].value2[0,2]

x3=ws.Rows[5].value2[0,0]
y3=ws.Rows[5].value2[0,1]
z3=ws.Rows[5].value2[0,2]

x4=ws.Rows[6].value2[0,0]
y4=ws.Rows[6].value2[0,1]
z4=ws.Rows[6].value2[0,2]

但是我想循环播放。如何循环播放?最后,我需要变量中的值。

3 个答案:

答案 0 :(得分:4)

假设您要为每行读取固定数量的3个值,我建议对x,y和z使用3个列表作为数据结构:

x = []
y = []
z = []
for row in ws.Rows[3:]:
    x.append(row.Value2[0,0])
    y.append(row.Value2[0,1])
    z.append(row.Value2[0,2])

然后,您可以通过x[0]z[4]等访问值。

如果列数也是可变的,则应使用2D array和两个嵌套的for循环来分配值。

答案 1 :(得分:3)

如果您真的想以所描述的方式声明变量,可以在excel中获得前5个x,y,z位置:

for i in range(5):
    globals()['x{0}'.format(i)] = ws.Rows[i + 2].Value2[0,0]
    globals()['y{0}'.format(i)] = ws.Rows[i + 2].Value2[0,1]
    globals()['z{0}'.format(i)] = ws.Rows[i + 2].Value2[0,2]

但是我建议将这些点存储在这样的字典列表中:

positions = list()
for i in range(5):
    positions.append({
        'x': ws.Rows[i + 2].Value2[0,0]
        'y': ws.Rows[i + 2].Value2[0,1]
        'z': ws.Rows[i + 2].Value2[0,2]
    })

答案 2 :(得分:0)

led = []
for i in range(5):
    globals()['x' + 'i'] = ws.Rows[i + 2].Value2[0,0]
    globals()['y' + 'i'] = ws.Rows[i + 2].Value2[0,1]
    globals()['z' + 'i'] = ws.Rows[i + 2].Value2[0,2]
    led.append(globals()['x' + 'i'])
    led.append(globals()['y' + 'i'])
    led.append(globals()['z' + 'i'])

按照我的要求,它对我有用。