需求背景:

工作中将数据保存xlsx文件之后,里面每一列中有很多重复的看着很不美观,需要将每一列中的相同值合并起来,是表格看起来美观简洁

处理前

处理后

直接上代码(内涵注释讲解)

"""
-*- coding: utf-8 -*-
@Time : 2022/12/6 10:10
@Author : Logan
@File : xlxs_test.py
@Comment : 合并单元格
"""
import os
import openpyxl def merge_xlsx(file):
'''
合并单元格
:param file: 需要合并的文件
:return:
'''
# 打开文件目录下的文件的第一张sheet页
wb = openpyxl.load_workbook(os.path.join(path, file))
sheet = wb["Sheet1"]
print(sheet.max_row) # 总行数
print(sheet.max_column) # 总列数
# 将 所有的 列号保存下来
column_list = []
for i in range(1, sheet.max_column + 1):
value = sheet.cell(row=2, column=i)
# value.coordinate 获取当前值所在的坐标 ---> A1, B1, C1
column_list.append(value.coordinate[0])
print(column_list)
# 遍历每一列 去合并
for index, letter in enumerate(column_list):
sumList = []
print(sumList)
print(letter)
# 先把每一列列的所有内容放入sumList中
for i in range(2, sheet.max_row + 1):
value = sheet.cell(row=i, column=index + 1).value
if value:
sumList.append(value)
else:
sumList.append('')
print(sumList)
# 开始合并单元格
prow = 0
frow = 0
flag = sumList[0]
for i in range(len(sumList)):
if sumList[i] != flag:
flag = sumList[i]
frow = i - 1
if frow >= prow:
# merge_cells() ---> 合并指定坐标
sheet.merge_cells(f"{letter}{prow + 2}:{letter}{frow + 2}")
prow = frow + 1
if i == len(sumList) - 1:
frow = i
sheet.merge_cells(f"{letter}{prow + 2}:{letter}{frow + 2}") print(f'合并完成一列: {letter}')
# 保存表
wb.save(os.path.join(path, file))
print(f'操作完毕') if __name__ == '__main__':
# 需要操作的文件
file_name = 'test_xlsx.xlsx'
# 获得当前py文件的路径
path = os.getcwd()
print(os.path.join(path, file_name))
merge_xlsx(file=file_name)

python之xlsx合并单元格的更多相关文章

  1. python 利用三方的xlrd模块读取excel文件,处理合并单元格

      目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式.  总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我 ...

  2. Java Controller下兼容xls和xlsx且可识别合并单元格的excel导入功能

    1.工具类,读取单元格数据的时候,如果当前单元格是合并单元格,会自动读取合并单元格的值 package com.shjh.core.util; import java.io.IOException; ...

  3. python xlwt 设置单元格样式-合并单元格

    xlwt模块详解--合并单元格 import xlwtworkbook = xlwt.Workbook()worksheet = workbook.add_sheet('My sheet')# 合并第 ...

  4. python-Excel读取-合并单元格读取

    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分) 1. python读取Excel单元格 代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并 ...

  5. C# 获取Excel中的合并单元格

    C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这 ...

  6. Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行

    Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行 模版格式,图格式是最简单的格式,但实际效果不是这种,实际效果图如图2 图2 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...

  7. 【POI xlsx】使用POI对xlsx的单元格样式进行设置 / 使用POI对xlsx的字体进行设置

    涉及到的样式都在代码中有说明: package com.it.poiTest; import java.io.FileNotFoundException; import java.io.FileOut ...

  8. NPOI之Excel——合并单元格、设置样式、输入公式

    首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...

  9. 【记录】解析具有合并单元格的Excel

    最近公司让做各种数据表格的导入导出,就涉及到电子表格的解析,做了这么多天总结一下心得. 工具:NOPI 语言:C# 目的:因为涉及到导入到数据库,具有合并单元格的多行必然要拆分,而NPOI自动解析的时 ...

  10. 让我头疼一下午的Excel合并单元格

    Excel导出常见问题 excel导出其实不算什么难事 在网上copy下模板代码,填充自己的业务数据,提供一个http接口基本就可以得到你要导出的数据了. 但是,凡事都有例外,截止今天,excel导出 ...

随机推荐

  1. Beats:使用Elastic Stack对Redis监控

  2. 关于Elasticsearch使用java的说明

    从Elastic 7.0开始,我们可以不安装JAVA.安装包包含一个相匹配的JAVA版本在里面. Elasticsearch包含来自JDK维护者(GPLv2 + CE)的捆绑版OpenJDK. 要使用 ...

  3. KubeOperator安装好后默认会占用80端口,替换成其他端口

    使用KubeOperator安装好k8s后,然后修改如下的配置文件,最后重启应用即可 重启:koctl restart

  4. 论Elasticsearch数据建模的重要性

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484159&idx=1&sn=731562a ...

  5. SQL Server如何精准匹配字符中的字符,绝对匹配。

    举例: 我现在是需要查询这字段里包含1的数据 我如果直接charindex,那么11,12也会被包含. 解决(1): SELECT * FROM ( SELECT '1,2,12,111' AS st ...

  6. 仿B站小火箭发射上升

    效果图:   CSS代码块: <style type="text/css"> .goTop { background-image: url(img/rocket_top ...

  7. Python(二)常用的正则表达式

    表单字段验证常用正则表达式 1.姓名 /^[\u4e00-\u9fa5]{2,4}$/ //2-41 2.手机号码 /^(13[0-9]|14[01456879]|15[0-35-9] 3.座机号码 ...

  8. 使用EF Core更新与修改生产数据库

    使用EF Core的Code First,在设计阶段,直接使用Database.EnsureCreated()和EnsureDeleted()可以快速删除.更新最新的数据结构.由于没有什么数据,删除的 ...

  9. 7 步保障 Kubernetes 集群安全

    随着 Kubernetes 的发展和改进,新的安全威胁和风险也逐渐向 K8s 转移,因此 K8s 安全性变得越来越重要,而保护 K8s 集群已成为 DevOps 团队不容忽视的重要任务.K8s 有多种 ...

  10. 独立按键控制led灯

    #include "regx51.h"typedef unsigned int u16; void delay_us(u16 time){ while(time--){} }voi ...