python openpyxl unmerge
时间: 2025-05-04 18:18:55 浏览: 15
### 使用 Python 和 Openpyxl 库取消合并单元格
当处理 Excel 文件中的合并单元格时,Openpyxl 提供了相应的方法来操作这些特性。为了确保所有被合并的单元格能够获取到原始值而不是 `None` 值,在读取文件之后可以遍历工作表并解除所有的合并区域。
下面是一个具体的实现方法:
```python
from openpyxl import load_workbook
def unmerge_cells_and_fill_value(file_path, sheet_name=None):
wb = load_workbook(filename=file_path)
if sheet_name is not None:
ws = wb[sheet_name]
else:
ws = wb.active
merged_ranges_copy = list(ws.merged_cells.ranges) # 获取所有合并单元格范围副本
for cell_range in reversed(merged_ranges_copy):
min_col, min_row, max_col, max_row = cell_range.bounds
top_left_cell_value = ws.cell(row=min_row, column=min_col).value
# 解除合并
ws.unmerge_cells(str(cell_range))
# 将左上角单元格的值填入原来合并区域内每一个单元格
for row in range(min_row, max_row + 1):
for col in range(min_col, max_col + 1):
ws.cell(column=col, row=row, value=top_left_cell_value)
wb.save('unmerged_' + file_path.split('/')[-1]) # 保存修改后的文件名为 'unmerged_原文件名'
```
此函数会加载指定路径下的Excel文档,并针对给定的工作表名称(如果没有提供,则默认为活动工作表),执行如下操作:
- 创建当前合并单元格列表的一个副本;
- 遍历该列表,对于每个合并区域,记录下其边界坐标以及最左上方单元格的内容;
- 调用 `ws.unmerge_cells()` 方法取消合并;
- 对于曾经属于同一个合并区间的各个单独单元格设置相同的值;最后将更改保存至新文件中[^1]。
通过这种方式可以在不改变原有逻辑的情况下完成对Excel内合并单元格的操作需求[^2]。
阅读全文
相关推荐


















