合并的单元格不可以直接修改其值,必须先取消合并、修改值、再重新合并。
下面的示例是将example.xlsx表格的sheet2表单的B列单元格中所有合并的单元格的值修改为‘Y’。这里面是假设B列中存在多个独立的合并单元格
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
ws = wb['sheet2']
merged_cell_range = list(ws.merged_cells.ranges)
merged_cell_B2 = [cell for cell in merged_cell_range if cell.coord[0]=='B']
for merged_cell in merged_cell_B2:
min_col, min_row, max_col, max_row = merged_cell.bounds # 获取合并单元格的边界
# 取消合并
ws.unmerge_cells(str(merged_cell))
# 修改值
ws.cell(row=min_row, column=min_col).value = 'Y'
# 重新合并
ws.merge_cells(start_row=min_row, start_column=min_col, end_row=max_row, end_column=max_col)
wb.save('example_updated.xlsx')