Python excel合并居中值相同的单元格实例代码
作者:一根咸鱼_ 发布时间:2021-09-24 13:40:47
标签:python,合并,单元格
前言
这里要说明一下,本文包含的代码其中一部分并不是自己写的,是我找了很多文章拼凑出来的,比如如何找相同内容的单元格、怎么合并、怎么居中等等。出处许多,这边就不一个个放链接了。就当做一份自己写的学习笔记供大家参考。
本文结构 是分段讲解代码,文末放全部的代码
处理前的单元格
----------------------->
可以看到有一些名字是重复的,我们现在要做的就是把这些重复的名字合并居中,程序执行完的效果如图。
(大家可能会说,这不是多此一举吗,直接点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


猜你喜欢
- 本文通过Python3+pyqt5实现了python Qt GUI 快速编程的19章的页面索引器应用程序例子。/home/yrd/eric_
- 一、前言图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术。二、
- PHP有效的时间戳典型范围是格林威治时间 1901 年 12 月 13 日 20:45:54 到 203
- 本文实例讲述了C#窗体读取EXCEL并存入SQL数据库的方法。分享给大家供大家参考。具体实现方法如下:windows窗体上放了一个Textb
- 本篇文章博主将带大家一起学习MySQL中常用的数据查询语言。DQL(Data Query Language 数据查询语言)SELECT 语法
- python加密打包程序加密方式:将py文件转为pyd格式安装easycython模块 pip install easycython使用ea
- 由于Node.js仅支持如下编码:utf8, ucs2, ascii, binary, base64, hex,并不支持中文GBK或GB23
- 前言:我们先定义一个test01.py的文件。test01.py中代码如下所示:def step():print(__name__) &nb
- 本文实例分析了Python多线程操作数据库相关问题。分享给大家供大家参考,具体如下:python多线程并发操作数据库,会存在链接数据库超时、
- 加载垃圾邮件数据集spambase.csv(数据集基本信息:样本数: 4601,特征数量: 57, 类别:1 为垃圾邮件,0 为
- 前言 本篇文章介绍一下 Pycharm 如何配置远程连接信息,使其能够在本地使用服务器上的GPU等硬件资源,并在本地完成代码的运行与调试。
- 一、概述在一般的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename FROM scott
- 目录jiaba库的使用1、jieba库的安装2、统计荷塘月色词频总结jiaba库的使用jieba库是一款优秀的 Python 第三方中文分词
- 本文默认你的开发环境.数据库已经安装好想用使用数据库.我们需要现在pom文件中添加相应的依赖pom.xml<?xml version=
- 某人使用如下过滤代码,发现经常被黑:n=request.form("username") p=request.form(
- 直接进入主题立方体每列颜色不同:# Import librariesimport matplotlib.pyplot as pltfrom
- 之前用Vue+element写了一个后台管理系统,在登录时使用axios请求数据传参时无法正常的获取数据。之后也是一通百度,发现原因是传递参
- 本文主要研究的是Python语言实现温度转换的相关实例,具体如下。代码如下:#TempConvert.py val=input("
- 相信大家在爬虫中都设置过请求头 user-agent 这个参数吧? 在请求的时候,加入这个参数,就可以一定程度的伪装成浏览器,就不会被服务器
- 函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串。通过指