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

如何用Python遍历工作表行并按每2行合并单列单元格?

使用xlwings实现Excel列中每两行单元格合并

xlwings完全支持你要的批量合并单元格需求,结合循环就能轻松实现每两行合并的效果。以下是具体实现方案:

核心思路

  1. 连接目标Excel文件及工作表,确保对应DataFrame已写入(或已存在于工作表中)
  2. 确定要处理的目标列,计算数据总行数
  3. 以步长为2的循环遍历行,每次合并当前行与下一行的目标列单元格
  4. 处理奇数行数的边界情况,避免越界错误
  5. 可选:设置合并后单元格的对齐样式,优化显示效果

代码示例

import xlwings as xw
import pandas as pd

# 示例DataFrame(替换为你的实际数据)
df = pd.DataFrame({'分类': ['甲', '甲', '乙', '乙', '丙'], '数值': [15, 25, 35, 45, 55]})

# 连接Excel文件(已存在文件填路径,新建用xw.Book())
wb = xw.Book('目标文件.xlsx')
sheet = wb.sheets['Sheet1']

# 将DataFrame写入工作表(若数据已在表中可跳过此步)
sheet.range('A1').value = df

# 配置目标列与数据范围
target_col = 'A'  # 对应DataFrame的第一列
header_row = 1    # 表头行号
start_row = header_row + 1  # 数据起始行
total_data_rows = len(df)   # 数据总行数
total_rows = header_row + total_data_rows  # 工作表总行数(含表头)

# 循环合并每两行
for i in range(start_row, total_rows + 1, 2):
    # 检查下一行是否存在,避免奇数行数时越界
    if i + 1 <= total_rows:
        sheet.range(f'{target_col}{i}:{target_col}{i+1}').merge()

# 设置合并单元格的居中对齐(可选)
merged_range = sheet.range(f'{target_col}{start_row}:{target_col}{total_rows}')
merged_range.api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter
merged_range.api.VerticalAlignment = xw.constants.VAlign.xlVAlignCenter

# 保存并关闭文件
wb.save()
wb.close()

关键说明

  • 循环步长设为2,确保每次迭代处理连续两行
  • 加入i + 1 <= total_rows的判断,避免最后一行是奇数时出现索引错误
  • 若你的DataFrame已提前写入工作表,直接跳过sheet.range('A1').value = df这一步即可
  • 对齐样式可根据需求调整,也可省略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:32:40