def Merge_cells(result_file, sheet_name, col_num):
wb = openpyxl.load_workbook(result_file)
ws = wb[sheet_name]
# 验证参数
if col_num < 1:
raise ValueError("col_num must be a positive integer.")
# 获取指定列数据
col_list = [cell[0].value for cell in ws.iter_rows(min_row=2, min_col=col_num, max_col=col_num)]
if not col_list:
return # 列数据为空,无需合并
# 合并单元格的逻辑
merge_ranges = []
start_index = 0
current_value = col_list[0]
for i in range(1, len(col_list)):
if col_list[i] != current_value:
end_index = i - 1
if end_index >= start_index:
merge_ranges.append((start_index, end_index))
current_value = col_list[i]
start_index = i
# 合并单元格和设置对齐
col_letter = get_column_letter(col_num)
for start, end in merge_ranges:
merge_range = f"{col_letter}{start + 2}:{col_letter}{end + 2}"
ws.merge_cells(merge_range)
for row in ws[merge_range]:
for cell in row:
cell.alignment = Alignment(horizontal="center", vertical="center")
wb.save(result_file)
Merge_cells(table_name, "Sheet1", 4) #调用Merge_cells 对sheet1中D列 合并单元格