由于某些限制,我试图使用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]
但是我想循环播放。如何循环播放?最后,我需要变量中的值。
答案 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'])
按照我的要求,它对我有用。