Если вы написали:
while cline < rownum :
tmp = source_ws.cell_value(cline+1,3)
ARRAY[tmp] = {"CELLNAME":tmp}
cline += 1
ARRAY был бы словарем, что-то вроде:
{"QWERTY":{"CELLNAME":"QWERTY"},
"ASDFGH":{"CELLNAME":"ASDFGH"},
"ZXCVBN":{"CELLNAME":"ZXCVBN"},
...,
}
Но так как вы назначаете temp, он перезаписывает каждую строку с последним значением...
#temp is: {"CELLNAME":"LASTVAL"}
{"QWERTY":temp,
"ASDFGH":temp,
"ZXCVBN":temp,
...,
}
Следовательно, все значения идентичны (в этом примере будет напечатано LASTVAL
).