Python excel合并居中值相同的单元格实例代码

作者:一根咸鱼_ 时间:2021-09-24 13:40:47 

前言

这里要说明一下,本文包含的代码其中一部分并不是自己写的,是我找了很多文章拼凑出来的,比如如何找相同内容的单元格、怎么合并、怎么居中等等。出处许多,这边就不一个个放链接了。就当做一份自己写的学习笔记供大家参考。

本文结构 是分段讲解代码,文末放全部的代码

处理前的单元格

Python excel合并居中值相同的单元格实例代码  ----------------------->Python excel合并居中值相同的单元格实例代码

可以看到有一些名字是重复的,我们现在要做的就是把这些重复的名字合并居中,程序执行完的效果如图。

(大家可能会说,这不是多此一举吗,直接点excel中的合并并居中不就好了? 但是在用程序处理大批量的excel表的时候,是非常减少人工成本的!!!!)

代码分解讲解

1. 首先,代码的思路 先将A列的内容读出放入一个列表中。

sumList = []

for i in range(2, sheet.max_row):
   value = sheet.cell(row=i, column=1).value
   if value:
       sumList.append(value)
   else:
       break

如果你要合并并居中的内容不在A列只要更改“column=”中的内容即可。

2. 进行合并单元格操作

preRow = 0
finRow = 0
flag = sumList[0]

for i in range(len(sumList)):
   if sumList[i] != flag:
       flag = sumList[i]
       finRow = i - 1
       if finRow >= preRow:
           sheet.merge_cells("A{}:A{}".format(preRow+2, finRow+2))
           preRow = finRow + 1
   if i == len(sumList) - 1:
       finRow = i
       sheet.merge_cells("A{}:A{}".format(preRow+2, finRow+2))

这里注意,如果你要合并的内容是从第二行开始的(我的第一行是表头),就在format中preRow和finRow的值加2就可以了(因为openpyxl是用1开始计数)

同样,如果是内容是从第三行开始就在format中preRow和finRow的值加 3即可。

着急的小伙伴可以不用看懂这部分代码,只要按照我上面的提示修改内容即可直接复制黏贴这段代码拿过来用!!

3. 进行第一列单元格居中操作

wsArea = sheet["A{}:A{}".format(2, 2+len(sumList))]
for i in wsArea:
   for j in i:
       j.alignment = Alignment(horizontal='center', vertical='center')

本文全部代码

import os
import openpyxl
from openpyxl.styles import Alignment

# 获得当前py文件的路径
path = os.getcwd()

# 打开py文件目录下的名为test.xlsx文件的第一张sheet页
wb = openpyxl.load_workbook(path + "/test.xlsx")
sheet = wb["Sheet1"]

# 先把A列的所有内容放入一个List中
sumList = []

for i in range(2, sheet.max_row):
   value = sheet.cell(row=i, column=1).value
   if value:
       sumList.append(value)
   else:
       break

# 开始合并单元格
preRow = 0
finRow = 0
flag = sumList[0]

for i in range(len(sumList)):
   if sumList[i] != flag:
       flag = sumList[i]
       finRow = i - 1
       if finRow >= preRow:
           sheet.merge_cells("A{}:A{}".format(preRow+2, finRow+2))
           preRow = finRow + 1
   if i == len(sumList) - 1:
       finRow = i
       sheet.merge_cells("A{}:A{}".format(preRow+2, finRow+2))

# 居中单元格
wsArea = sheet["A{}:A{}".format(2, 2+len(sumList))]
for i in wsArea:
   for j in i:
       j.alignment = Alignment(horizontal='center', vertical='center')

# 保存表
wb.save(path + '/test1.xlsx')

来源:https://blog.csdn.net/weixin_47597129/article/details/124319638

标签:python,合并,单元格
0
投稿

猜你喜欢

  • OpenCV+Python几何变换的实现示例

    2022-02-09 14:44:52
  • 一文详解Python中多进程和进程池的使用方法

    2023-12-01 04:10:12
  • 11个并不被常用但对开发非常有帮助的Python库

    2023-10-25 15:00:56
  • sql自动增长标识导致导入数据问题的解决方法

    2023-07-04 04:39:22
  • Python入门教程之运算符重载详解

    2021-10-12 20:15:28
  • python3 tkinter实现添加图片和文本

    2022-08-07 04:28:17
  • Django-Rest-Framework 权限管理源码浅析(小结)

    2021-11-02 06:18:49
  • WEB前端开发经验总结

    2009-07-20 18:01:00
  • 解决python 读取npy文件太大不能完全显示的问题

    2021-08-20 12:07:19
  • Python 确定多项式拟合/回归的阶数实例

    2023-08-26 23:54:58
  • 对python 操作solr索引数据的实例详解

    2023-11-02 16:18:19
  • 在keras中获取某一层上的feature map实例

    2023-10-19 11:37:24
  • Python中import导入不同目录的模块方法详解

    2021-04-08 02:37:08
  • 在ASP.NET 2.0中操作数据之四十四:DataList和Repeater数据排序(三)

    2023-07-02 04:45:57
  • Django-xadmin+rule对象级权限的实现方式

    2023-02-20 17:08:08
  • Python如何实现定时器功能

    2023-04-13 23:19:28
  • ACCESS转SQL Server2000需要注意的问题

    2007-11-18 15:25:00
  • Python语法之精妙的十个知识点(装B语法)

    2022-04-15 21:43:51
  • Python通过2种方法输出带颜色字体

    2023-02-08 20:53:22
  • 教你利用Python破解ZIP或RAR文件密码

    2022-04-25 07:11:15
  • asp之家 网络编程 m.aspxhome.com