for i, _ in enumerate(cells_rows[1:]): if i > 0: index = i*3 # 每循环一次,就在对应位置下方插入2行。1行是空行,1行是表头行。 ws.insert_rows(idx=index, amount=2) # 因为每次插入2行,所以需要在表头行那里,将表头及其样式写入。 for j, v in enumerate(header): r, c = index+1, j+1 cell = ws.cell(row=r, column=c) cell.value = v cell.alignment = alignment cell.font = font cell.border = border cell.fill = fill # 更新后面的公式 if cell.coordinate[:1] in ('H', 'J'): cell = ws.cell(row=r+1, column=c) cell.value = re.sub('\d+', str(r+1), cell.value)
# 获取每一列的值,拼接在一个列表中 cells_rows = [[cell for cell in row] for row in ws.rows]
# 获取标题 header = [cell.value for cell in cells_rows[0]]
# 获取标题行中,每个单元格中的各种样式 alignment, border, fill, font = cell_style(cell=cells_rows[0][0])
for i, _ in enumerate(cells_rows[1:]): if i > 0: index = i*3 # 每读取一行,就在下方插入两行 ws.insert_rows(idx=index, amount=2) # 写表头 for j, v in enumerate(header): r, c = index+1, j+1 cell = ws.cell(row=r, column=c) cell.value = v cell.alignment = alignment cell.font = font cell.border = border cell.fill = fill # 更新后面的公式 if cell.coordinate[:1] in ('H', 'J'): cell = ws.cell(row=r+1, column=c) cell.value = re.sub('\d+', str(r+1), cell.value) # 整个代码写完后,一定要记得保存 wb.save('工资条.xlsx')