当前位置: 首页 > news >正文

Python pandas openpyxl excel合并单元格,设置边框,背景色

Python pandas openpyxl excel合并单元格,设置边框,背景色

    • 1. 效果图
    • 2. 源码
    • 参考

1. 效果图

pandas设置单元格背景色,字体颜色,边框
在这里插入图片描述

openpyxl合并单元格,设置丰富的字体
在这里插入图片描述

2. 源码

# excel数字与列名互转
import osimport numpy as np
import openpyxl
import pandas as pd
from openpyxl.styles import Side, Border, Font# 列名转数字
def column_to_num(s: str) -> int:assert (isinstance(s, str))for i in s:if not 64 < ord(i) < 91:raise ValueError('Excel Column ValueError')return sum([(ord(n) - 64) * 26 ** i for i, n in enumerate(list(s)[::-1])])# 数字转列名
def num_to_column(n: int) -> str:assert (isinstance(n, int) and n > 0)num = [chr(i) for i in range(65, 91)]ret = []while n > 0:n, m = divmod(n - 1, len(num))ret.append(num[m])return ''.join(ret[::-1])def read_and_merge(file=None):np.random.seed(24)print([x[0] for x in np.random.randn(10, 1).tolist()])data = {'name': ['Lucy'] * 10,'title': ['美丽的花朵'] * 6 + ['面向未来'] * 4,'爱好': ['篮球', '足球', '羽毛球', '乒乓球', '网球', '游泳', '瑜伽', '阅读', '骑行', '爬山'],'Date': pd.to_datetime(['2017-05-31 20:53:00', '2017-05-11 20:53:00', '2017-05-08 20:53:00','2017-06-06 20:53:00', '2017-06-06 20:53:00'] * 2),'A': np.linspace(1, 10, 10).tolist(),'B': [x[0] for x in np.random.randn(10, 1).tolist()],'C': [x[0] for x in np.random.randn(10, 1).tolist()],'D': [x[0] for x in np.random.randn(10, 1).tolist()],'E': [x[0] for x in np.random.randn(10, 1).tolist()],'F': [x[0] for x in np.random.randn(10, 1).tolist()],'G': [x[0] for x in np.random.randn(10, 1).tolist()],'H': [x[0] for x in np.random.randn(10, 1).tolist()]}df_b = pd.DataFrame(data)print(df_b)# 定义一个函数来设置样式,将文本居中对齐和上下居中对齐def set_cell_style(value):style = 'text-align: center; vertical-align: middle; border: solid 1px black; 'return styledef set_cell_color(val):if val < 4:color = 'green'elif val < 8:color = 'yellow'else:color = 'red'return 'background-color: %s' % colordef color_negative_red(val):"""Takes a scalar and returns a string withthe css property `'color: red'` for negativestrings, black otherwise."""# print('---val:', val)# color_list = []# for val in vals:#     color = 'color: %s' % ('red' if val < 0 else 'black')#     color_list.append(color)# return color_listreturn 'color: %s' % ('red' if val < 0 else 'black')# 使用Styler对象来应用样式,同时设置文本的居中对齐和上下居中对齐df_c = df_b.style.map(lambda x: set_cell_style(x)).map(lambda x: set_cell_color(x), subset=['A']).map(lambda x: color_negative_red(x), subset=pd.IndexSlice[[1, 3, 5, 7, 9], ['B', 'C', 'D', 'G']])# 保存到新文件df_c.to_excel('temp.xlsx', index=False, engine='openpyxl')# 合并单元格wb = openpyxl.load_workbook('temp.xlsx')ws = wb.active# 第一列连续相同值的合并单元格# 获取第一列数据type_list = []i = 2while True:r = ws.cell(i, 1).valueif r:type_list.append(r)else:breaki += 1# 判断合并单元格的始末位置s = 0e = 0flag = type_list[0]for i in range(len(type_list)):if type_list[i] != flag:flag = type_list[i]e = i - 1if e >= s:ws.merge_cells("A" + str(s + 2) + ":A" + str(e + 2))s = e + 1if i == len(type_list) - 1:e = iws.merge_cells("A" + str(s + 2) + ":A" + str(e + 2))### 合并列num_rows = ws.max_rowcombine_columns = {('F', 'G')}for i in range(num_rows):for columns in combine_columns:start, end = columnsws.merge_cells(start + str(i + 1) + ":" + end + str(i + 1))# 定义不同列的字体配置font_columns = [(['A', 'B', 'C'], Font(name='Times New Roman', size=9, bold=True)),(['D', 'E'], Font(name='Times New Roman', size=12)),(['F', 'G'], Font(name='宋体', size=12)),]# 设置列的字体样式for labels, font in font_columns:for label in labels:for cell in ws[label]:cell.font = font# XX结尾的数据改成红色if cell.value and str(cell.value).endswith("XX"):cell.value = cell.value[:-2]cell.font = Font(name='Times New Roman', size=12, bold=True, color="FF0000", )# 创建一个边框样式border_style = Border(left=Side(border_style='thin', color='000000'),right=Side(border_style='thin', color='000000'),top=Side(border_style='thin', color='000000'),bottom=Side(border_style='thin', color='000000'))# 遍历工作表中的所有单元格并应用边框样式for row in ws.iter_rows():for cell in row:cell.border = border_stylewb.save('output_excel_file.xlsx')try:os.remove('temp.xlsx')except FileNotFoundError:passexcept Exception as e:passreturn 'output_excel_file.xlsx'if __name__ == '__main__':for i in range(1, 100):column_name = num_to_column(i)print(i, column_name, column_to_num(column_name))read_and_merge()

参考

  • https://blog.csdn.net/boysoft2002/article/details/119794260
  • https://blog.csdn.net/flysnownet/article/details/134049045
  • https://blog.csdn.net/shenqigongshi/article/details/131438042
  • https://blog.csdn.net/shenghaomail/article/details/125754836
  • https://blog.csdn.net/Xw_Classmate/article/details/109006600

相关文章:

Python pandas openpyxl excel合并单元格,设置边框,背景色

Python pandas openpyxl excel合并单元格&#xff0c;设置边框&#xff0c;背景色 1. 效果图2. 源码参考 1. 效果图 pandas设置单元格背景色&#xff0c;字体颜色&#xff0c;边框 openpyxl合并单元格&#xff0c;设置丰富的字体 2. 源码 # excel数字与列名互转 import o…...

【vue3|第7期】 toRefs 与 toRef 的深入剖析

日期&#xff1a;2024年6月6日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…...

git代码冲突处理软件P4Merge

文章目录 1. 下载安装2. 配置脚本参考链接 1. 下载安装 下载地址&#xff1a;https://www.perforce.com/downloads/helix-visual-client-p4v 下载教程&#xff1a;http://blog.csdn.net/wirelessqa/article/details/9035215 这里下载之前需要注册。 2. 配置脚本 编写一个全局…...

Unity物体材质属性Offset动态偏移

Unity物体材质属性Offset动态偏移 MeshRenderer mr;float offset;public float scrollSpeed 0.5F;private void Start(){mr GetComponent<MeshRenderer>();}void Update(){offset -Time.time * scrollSpeed;mr.material.mainTextureOffset new Vector2(0, -offset);}…...

【数据结构】筛选法建堆

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…...

DevExpress Installed

一、What’s Installed 统一安装程序将DevExpress控件和库注册到Visual Studio中&#xff0c;并安装DevExpress实用工具、演示应用程序和IDE插件。 Visual Studio工具箱中的DevExpress控件 Visual Studio中的DevExpress菜单 Demo Applications 演示应用程序 Launch the Demo…...

解决QT QMessageBox 弹出需点击两次才能关闭问题

放个链接不迷路&#xff1a;添加链接描述...

Milvus--向量数据库

Milvus 是一个开源的向量数据库&#xff0c;专为高维向量数据的存储、查询和检索而设计。它支持多种类型的向量数据&#xff0c;如浮点数向量、整数向量等&#xff0c;并且提供了强大的向量相似度计算功能。Milvus采用分布式架构&#xff0c;可以轻松地扩展到大规模数据集&…...

php质量工具系列之PHPCPD

PHPCPD 用于检测重复代码&#xff0c;直观的说就是复制粘贴再稍微改改 该工具作者已经 停止维护 安装 composer global require --dev sebastian/phpcpd执行 phpcpd --log-pmd phpcpd_result.xml ./app参数介绍 --log-pmd 将结果保存在phpcpd_result.xml 中 ./app 是phpcpd扫…...

Android14 WMS-窗口绘制之relayoutWindow流程(二)-Server端

本文接着如下文章往下讲 Android14 WMS-窗口绘制之relayoutWindow流程(一)-Client端-CSDN博客 然后就到了Server端WMS的核心实现方法relayoutWindow里 WindowManagerService.java - OpenGrok cross reference for /frameworks/base/services/core/java/com/android/server…...

安全测试 之 安全漏洞:SQL注入

1. 背景 持续学习安全测试ing&#xff0c;安全测试是在IT软件产品的生命周期中&#xff0c;特别是产品开发基本完成到发布阶段&#xff0c;对产品进行检验以验证产品是否符合安全需求定义和产品质量标准的过程。也就是说安全测试是建立在功能测试的基础上进行的测试。 2. SQL…...

CUDA和驱动版本之间的对应关系

这个之前总结过&#xff0c;可是不太好找&#xff0c;专门写一篇博客再总结一下&#xff1a; 1. CUDA 12.5 Release Notes — Release Notes 12.5 documentation 相信很多朋友有一样的需求。...

MDK(μVsion3)问题总结及解决方法

问题 1&#xff1a;MDK 工具的 CARM 编译器&#xff1f; 我原来对 CARM 编译器比较熟悉&#xff0c;想用 CARM 编译器编译工程&#xff0c;但是却弹出一个不能执 行“cc”的错误&#xff0c;到 KEIL 网站查下才知道原因&#xff1a;由于 CARM 编译器是比较老的编译器&#xff0…...

手眼标定学习笔记

目录 标定代码&#xff1a; 手眼标定原理学习 什么是手眼标定 手眼标定的目的 eye in hand eye to hand AXXB问题的求解 标定代码&#xff1a; GitHub - pumpkin-ws/HandEyeCalib 推荐博文&#xff1a; https://zhuanlan.zhihu.com/p/486592374 手眼标定原理学习 参…...

Dell戴尔XPS 16 9640 Intel酷睿Ultra9处理器笔记本电脑原装出厂Windows11系统包,恢复原厂开箱状态oem预装系统

下载链接&#xff1a;https://pan.baidu.com/s/1j_sc8FW5x-ZreNrqvRhjmg?pwd5gk6 提取码&#xff1a;5gk6 戴尔原装系统自带网卡、显卡、声卡、蓝牙等所有硬件驱动、出厂主题壁纸、系统属性专属联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell、迈克菲等预装软…...

【第8章】SpringBoot实战篇之文章分类(上)

文章目录 前言一、后端代码1. CategoryController2. service3. CategoryMapper4. Category 二、测试1. 失败(校验)2.正常 总结 前言 从这开始进入文章相关的接口开发&#xff0c;本章主要介绍定义文章分类接口和新增文章分类 建表语句和测试用例&#xff0c;在SpringBoot专栏首…...

【QT】Qt Plugin开发

目录 插件是什么QT插件是什么 为什么要有插件开发插件开发优势插件和动态库区别 Qt PluginQT插件类型QT插件开发流程QT插件应用QT插件JSON文件 参考文章 插件是什么 插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。…...

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

在现代高性能计算和深度学习领域&#xff0c;GPU的强大计算能力使其成为不可或缺的工具。然而&#xff0c;随着模型复杂度的增加&#xff0c;单个GPU已经无法满足需求&#xff0c;需要多个GPU甚至多台服务器协同工作。这就要求高效的GPU互联通信技术&#xff0c;以确保数据传输…...

Python对获取数据的举例说明

当使用Python来获取数据时&#xff0c;有许多不同的方法和库可以根据你的需求来选择。以下是一些常见的示例&#xff0c;说明如何使用Python来从各种来源获取数据。 1. 从网站或API获取JSON数据 你可以使用requests库从网站或API获取JSON格式的数据。例如&#xff0c;从某个API…...

JVMの垃圾回收

在上一篇中&#xff0c;介绍了JVM组件中的运行时数据区域&#xff0c;这一篇主要介绍垃圾回收器 JVM架构图&#xff1a; 1、垃圾回收概述 在第一篇中介绍JVM特点时&#xff0c;有提到过内存管理&#xff0c;即Java语言相对于C&#xff0c;C进行的优化&#xff0c;可以在适当的…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...