You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作Excel:如何追加数据且不跳过空行?

解决Excel追加数据时跳过空行的问题

问题原因

sheet.append() 方法的逻辑是找到整个工作表已使用区域的最后一行(即所有列中最靠下的非空行),再在其下方追加数据。如果其他列存在比目标列(比如你的ID列)更靠下的非空数据,就会导致目标列出现空行,和你期望的“在指定列末尾追加”不符。

解决方法

不要依赖append(),而是定位到目标列(ID列)的最后一个非空行的下一行,然后逐个单元格写入数据。

步骤1:找到ID列的最后非空行

假设ID列是工作表的第1列(A列),可以通过遍历该列找到最后一个有值的行号:

# 找到ID列(第1列)最后一个非空行的行号
last_id_row = 0
for row in range(1, sheet.max_row + 1):
    cell_value = sheet.cell(row=row, column=1).value
    if cell_value is not None and cell_value != "":
        last_id_row = row

# 新数据要写入的行号
target_row = last_id_row + 1

步骤2:计算新ID并写入数据

注意不要用len(sheet['ID'])计算ID,因为它会包含空行,应该基于ID列最后一个非空值加1:

# 计算新ID:如果ID列已有数据,取最后一个值+1;否则从1开始
new_id = sheet.cell(row=last_id_row, column=1).value + 1 if last_id_row > 0 else 1

# 逐个单元格写入数据
sheet.cell(row=target_row, column=1, value=new_id)
sheet.cell(row=target_row, column=2, value=MedS.get())
sheet.cell(row=target_row, column=3, value=QuanS.get())
sheet.cell(row=target_row, column=4, value=HosS.get())
sheet.cell(row=target_row, column=5, value=ExpS.get())
sheet.cell(row=target_row, column=6, value=time_stamp)

完整示例代码

# 找到ID列最后非空行
last_id_row = 0
for row in range(1, sheet.max_row + 1):
    cell_val = sheet.cell(row=row, column=1).value
    if cell_val is not None and cell_val != "":
        last_id_row = row

target_row = last_id_row + 1
new_id = sheet.cell(row=last_id_row, column=1).value + 1 if last_id_row > 0 else 1

# 写入数据
sheet.cell(row=target_row, column=1, value=new_id)
sheet.cell(row=target_row, column=2, value=MedS.get())
sheet.cell(row=target_row, column=3, value=QuanS.get())
sheet.cell(row=target_row, column=4, value=HosS.get())
sheet.cell(row=target_row, column=5, value=ExpS.get())
sheet.cell(row=target_row, column=6, value=time_stamp)

# 保存工作簿
wb.save("your_excel_file.xlsx")

补充说明

  • 如果你的ID列是用列名(比如Excel中设置了表头“ID”),可以先找到表头所在行,再从表头下一行开始遍历找最后非空行。
  • 这种方法完全基于目标列的位置写入,不会受其他列数据的影响,确保数据始终追加在目标列的末尾,不会出现空行。

内容的提问来源于stack exchange,提问作者Ultio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:50:22