for循环遍历列表写入Excel时始终仅获取最后一个值问题求助
问题原因
你在else分支遍历roomnum时,始终向(row + 1, col)这个固定位置的单元格写入内容,前一次写入的值会被后一次覆盖,因此最终单元格内只会保留最后一个值Polygon 3。打印输出正常是因为终端输出不会覆盖之前的打印内容,不存在覆盖逻辑。
解决方法
根据你的使用场景二选一即可:
- 所有roomnum值放在同一个单元格,用逗号分隔:
直接删除原有的for i in roomnum循环,替换为一行代码即可:
worksheet.write(row + 1, col, ",".join(roomnum), cell_format)
- 每个roomnum值单独占一行:
遍历的时候同步递增行号,避免覆盖:
current_row = row + 1 for i in roomnum: print(i) worksheet.write(current_row, col, i, cell_format) current_row += 1 # 后续其他列的写入可以根据需求选择对应行号,若要和第一个roomnum行对齐就保留row+1即可 worksheet.write(row + 1, col + 1, convert_quantity_from_mm_squared_to(units, v['initialArea'], precision), cell_format) worksheet.write(row + 1, col + 2, units, cell_format) worksheet.write(row + 1, col + 3, ",".join(v['pages']), cell_format)
内容的提问来源于stack exchange,提问作者Cedric Woo
相关产品推荐
相关产品推荐

