当前位置: 代码网 > it编程>前端脚本>Python > Python合并和取消合并Excel单元格的完整教学

Python合并和取消合并Excel单元格的完整教学

2026年09月01日 Python 我要评论
本文将介绍如何利用 python 和 free spire.xls 库,以简洁的代码完成合并行、合并列、合并指定区域以及取消合并(拆分)等全部常见场景。该方案无需 excel、wps 客户端环境,程序

本文将介绍如何利用 python 和 free spire.xls 库,以简洁的代码完成合并行、合并列、合并指定区域以及取消合并(拆分)等全部常见场景。该方案无需 excel、wps 客户端环境,程序运行机器无需安装办公软件,即可读写 xls、xlsx 文件,聚焦文档格式与数据操作,适合脚本自动化、数据预处理等场景。

1. 准备工作

首先通过 pip 安装所需库:

pip install spire.xls.free

在 python 脚本开头导入必要的模块:

from spire.xls import *
from spire.xls.common import *

2. 合并整行

若要将某一行中的所有单元格合并为一个整体,例如创建跨列的表头,可使用 rows[index].merge() 方法(索引从 0 开始)。

# 加载工作簿
workbook = workbook()
workbook.loadfromfile("销售数据.xlsx")
sheet = workbook.worksheets[0]

# 将第 1 行(索引0)全部合并
sheet.rows[0].merge()
# 填充合并后的内容(仅左上角单元格有效)
sheet.range["a1"].value = "2026年度销售汇总"

workbook.savetofile("合并行结果.xlsx", excelversion.version2013)
workbook.dispose()

3. 合并整列

类似地,如果希望将某一列所有单元格合并,比如创建垂直的类别标识,使用 columns[index].merge()

# 合并第 2 列(索引1,即b列)
sheet.columns[1].merge()
# 内容仅保留在 b1 单元格
sheet.range["b1"].value = "地区分类"

4. 合并指定单元格区域

最灵活的方式是合并任意矩形区域,如标题跨多列、小计跨多行等。使用 range["起始单元格:结束单元格"].merge()

# 合并 a1 到 e1(横向跨5列)
sheet.range["a1:e1"].merge()

# 合并 c3 到 c8(纵向跨6行)
sheet.range["c3:c8"].merge()

# 合并 d4 到 f6(2行×3列)
sheet.range["d4:f6"].merge()

注意:合并后,只有区域左上角的单元格值会被保留,其余单元格的值会被自动清除,请提前备份数据。

5. 取消合并(拆分单元格)

取消合并与合并操作对应,使用 unmerge() 方法。可以取消特定单元格所在的合并区域,也可以针对整行/整列批量取消。

取消单个合并区域

# 拆分包含 a1 的合并区域(传入区域内任意单元格即可)
sheet.range["a1"].unmerge()

取消整行的合并

sheet.rows[0].unmerge()

取消整列的合并

sheet.columns[1].unmerge()

一次性拆分工作表中所有合并区域

merged_list = sheet.mergedcells   # 获取所有合并区域列表
for cell_range in merged_list:
    cell_range.unmerge()

6. 综合代码示例

下面提供一个完整脚本,涵盖加载文件、同时进行三种合并操作、保存结果,然后再演示取消合并的过程。

from spire.xls import *
from spire.xls.common import *

def merge_demo():
    # ----- 步骤1:加载源文件 -----
    workbook = workbook()
    workbook.loadfromfile("原始报表.xlsx")
    sheet = workbook.worksheets[0]

    # ----- 步骤2:执行多种合并 -----
    # 2.1 合并第1行作为大标题
    sheet.rows[0].merge()
    sheet.range["a1"].value = "全国门店销售总览"

    # 2.2 合并b列作为区域分类
    sheet.columns[1].merge()
    sheet.range["b1"].value = "大区"

    # 2.3 合并 d2:e4 区域作为备注说明
    sheet.range["d2:e4"].merge()
    sheet.range["d2"].value = "注:数据不含港澳台"

    # ----- 步骤3:保存合并后的文件 -----
    workbook.savetofile("合并结果.xlsx", excelversion.version2013)
    workbook.dispose()

    # ----- 步骤4:演示取消合并(重新加载) -----
    workbook2 = workbook()
    workbook2.loadfromfile("合并结果.xlsx")
    sheet2 = workbook2.worksheets[0]

    # 取消合并 d2:e4 区域
    sheet2.range["d2"].unmerge()

    # 取消合并第1行
    sheet2.rows[0].unmerge()

    workbook2.savetofile("取消合并结果.xlsx", excelversion.version2013)
    workbook2.dispose()

if __name__ == "__main__":
    merge_demo()

运行该脚本后,你会得到两个文件:合并结果.xlsx 展示所有合并效果,取消合并结果.xlsx 则恢复了部分区域的拆分状态。

7. 常见注意事项

  • 内容保留规则:合并操作仅保留左上角单元格的值,若区域内有其他数据,它们将被丢弃。建议在合并前完成数据填充,或先备份原始数据。
  • 合并后写入数据:合并完成后,向合并区域写入数据时,仍然只能通过左上角单元格的地址(如 range["a1"].value = ...)进行赋值。
  • 性能考量:如果工作表中存在大量合并区域,频繁调用 merge()unmerge() 可能稍慢,建议批量操作。
  • 异常处理:若传入的单元格区域已有合并状态,再次合并不会报错,但可能产生嵌套合并问题,建议先检查 mergedcells 属性。

以上就是python合并和取消合并excel单元格的完整教学的详细内容,更多关于python合并和取消合并excel单元格的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com