【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗
欢迎来到"花花 Show Python",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。
自我介绍:
我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,让每个人都能享受到编程的乐趣。我相信,通过不断的学习和实践,我们都能够成为更好的开发者。
关注提示:
如果您喜欢我的内容,别忘了点击关注哦!这样您就可以第一时间获取我的更新和分享。您的支持是我不断前进的动力。
原表1长这样:
原表2长这样:

代码运行比较后的表1长这样:
代码运行比较后的表2长这样:

# 导入openpyxl库中的PatternFill类,用于设置单元格的填充样式
from openpyxl.styles import PatternFill
# 导入openpyxl库中的colors模块,但在这个例子中,我们实际上可以直接使用colors.Color类或者通过字符串指定颜色
from openpyxl.styles import colors
# 导入openpyxl库中的Font类,用于设置单元格的字体样式
from openpyxl.styles import Font
# 导入openpyxl库,并给它一个别名pxl,以便在代码中更简洁地引用
import openpyxl as pxl # 加载名为'data1.xlsx'的Excel文件,并将其存储在workbook_1变量中
workbook_1 = pxl.load_workbook(r'表1.xlsx') # 加载名为'data2.xlsx'的Excel文件,并将其存储在workbook_2变量中
workbook_2 = pxl.load_workbook(r'表2.xlsx') # 选择workbook_1中的活动工作表(通常是第一个工作表),并将其存储在workbook_1_sheet_1变量中
workbook_1_sheet_1 = workbook_1.active # 选择workbook_2中的活动工作表(通常是第一个工作表),并将其存储在workbook_2_sheet_1变量中
workbook_2_sheet_1 = workbook_2.active # 计算两个工作表中较大的行数和列数,以便遍历较大的区域
max_row = workbook_1_sheet_1.max_row if workbook_1_sheet_1.max_row > workbook_2_sheet_1.max_row else workbook_2_sheet_1.max_row
max_column = workbook_1_sheet_1.max_column if workbook_1_sheet_1.max_column > workbook_2_sheet_1.max_column else workbook_2_sheet_1.max_column # 遍历两个工作表的每个单元格(基于较大的行数和列数)
for i in range(1, (max_row + 1)): # 从第1行遍历到最大行 for j in range(1, (max_column + 1)): # 从第1列遍历到最大列 cell_1 = workbook_1_sheet_1.cell(i, j) # 获取workbook_1中当前位置的单元格 cell_2 = workbook_2_sheet_1.cell(i, j) # 获取workbook_2中当前位置的单元格 # 如果两个单元格的值不相等 if cell_1.value != cell_2.value: # 将workbook_1中当前单元格的填充样式设置为黄色 cell_1.fill = PatternFill("solid", fgColor='FFFF00') # 将workbook_1中当前单元格的字体设置为黑色并加粗 cell_1.font = Font(color=colors.BLACK, bold=True) # 将workbook_2中当前单元格的填充样式也设置为黄色 cell_2.fill = PatternFill("solid", fgColor='FFFF00') # 将workbook_2中当前单元格的字体也设置为黑色并加粗 cell_2.font = Font(color=colors.BLACK, bold=True) # 将修改后的workbook_1保存为名为'data3.xlsx'的文件
workbook_1.save('修改后表1.xlsx') # 将修改后的workbook_2保存为名为'data4.xlsx'的文件
workbook_2.save('修改后表2.xlsx')
相关文章:
【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗
欢迎来到"花花 Show Python",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。 自我介…...
Linux下查看各进程的swap
cat /etc/re*se Red Hat Enterprise Linux Server release 6.8 (Santiago) 简单的可以通过top命令查看 top 后 按 f 进入选择列界面 按 p 就会输出swap信息(变为P) 回车返回看到SWAP信息了 再按 F 再按p 按swap排序 再回车后就是各进程按swap排序…...
最后一个单词的长度 简单字符串问题
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World" 输出:5 解…...
Autodesk Mudbox 2024:重塑创意边界的3D数字绘画与雕刻利器
在数字艺术与设计领域,Autodesk Mudbox 2024以其卓越的性能和直观的操作界面,再次刷新了3D数字绘画与雕刻软件的标准。作为Autodesk家族的一员,Mudbox不仅继承了其家族强大的技术基因,更在细节上精雕细琢,为艺术家和设…...
【python下用sqlite3, 多线程下报错,原因和解决 】
在python下用sqlite3, 多线程 在UPDATE 或者INSERT的时候, 会报错 sqlite3.OperationalError: cannot commit - no transaction is active 1. 原因 多线程写冲突 非原子写操作:如果多个线程同时执行非原子写操作,可能会导致数据覆盖或不一致。 2. 解…...
学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信
目录 一、端口号 port 二、套接字 socket 1、原理 2、socket函数介绍 三、TCP实现网络通信 1、原理 2、TCP通信原理图 3、TCP相关函数 1)bind 绑定 2)listen 监听 3)accept 接收连接请求 4)recv 接收 5)sen…...
【DataKit系列】数据迁移-实例搭建步骤(二)
说明:此文档仅包含使用DataKit进行数据迁移时,搭建迁移任务相关教程,不包含一些必须的前置配置步骤,和环境要求等,请优先学习“【DataKit系列】数据迁移-使用说明(一)”文档。 数据迁移实例搭建…...
发送jsonp请求(前后端如何实现)
发送jsonp请求(前后端如何实现) 前端 $.ajax({url: /api/jsonp,type: get,data: { id: 123 }, // 参数dataType: jsonp,jsonp: cb, // 回调函数的参数名jsonpCallback: successfn,// 回调函数contentType: "application/json; charsetutf-8",success: function(resp…...
Leetcode—1239. 串联字符串的最大长度【中等】(unordered_set)
2024每日刷题(155) Leetcode—1239. 串联字符串的最大长度 实现代码 class Solution { public:bool charSet(string & s) {unordered_set<char> charSet(s.begin(), s.end());// true表示有重复// false表示唯一return s.size() ! charSet.s…...
Spring Boot 3.x Rest API统一异常处理最佳实践
上一篇:Spring Boot 3.x Rest API最佳实践之统一响应结构 下一篇:Spring Boot 3.x Web单元测试最佳实践 参考著作:Error Handling for REST with Spring 在Spring MVC应用中,要对web表示层所抛出的异常进行捕获处理有多种方式&…...
线程的进阶学习
线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时效果等价于pthread_exit 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程 (main函数) return都会造成 进程结束 线程资源回收 ---pthread_join int pthread_ca…...
13.1 Python 正则表达式基础
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...
贪心算法介绍(Greedy Algorithm)
贪心算法介绍(Greedy Algorithm) 1. 贪心算法概念简介 贪心算法Greedy Algorithm是一种在每一步选择中都采取当前状态下最优(或最有利)决策的算法策略,以期望通过这样的局部最优决策达到全局最优解。它适用于那些…...
谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发
文章目录 一,175-商城业务-检索服务-检索查询参数模型分析抽取二,176-商城业务-检索服务-检索返回结果模型分析抽取三,177-商城业务-检索服务-检索DSL测试-查询部分四,178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…...
爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍
RPC (Remote Procedure Call) 是远程调用的意思。 在 Js 逆向时,本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信,这样可以直接调用浏览器中的一些函数方法,不必去在意函数具体的执行逻辑,可以省去大量…...
【安卓】WebView的用法与HTTP访问网络
文章目录 WebView的用法使用http访问网络使用HttpURLConnection使用OkHttp 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 WebView的用法 新建一个WebViewTest项目,然后修…...
Mysql中文存入乱码???
问题描述 提示:用的mysql5.x版本: 例如:在新增数据的时候,数据库本应该保存中文的字段出现了乱码???: 原因分析: 提示:首先想到的是mysql的字符集设置&…...
安美数字酒店宽带运营系统 weather.php 任意文件读取漏洞复现
0x01 产品简介 HiBOS酒店宽带运营系统是由安美世纪(北京)科技有限公司开发的一套专为酒店设计的宽带管理系统。该系统旨在提升酒店宽带服务的运营效率和安全性,为酒店客人提供稳定、高速、便捷的上网体验。 0x02 漏洞概述 安美数字酒店宽带运营系统 weather.php …...
BGP的反射器(四)
解决IBGP全互联问题带来的问题: 路由器需维护大量的TCP和BGP连接,尤其在路由器数量较多时AS内BGP网络的可扩展性较差 角色 RR:路由反射器Client:RR的客户端Non-Client:非客户机 关系 Client只与RR之间建立IBGP会话…...
proxy负载均衡
endpoint : 终点、终端 看service服务器的ip kubectl get ep backend -> real server :真正提供web服务的服务器 负载均衡器 load balancer --》LB USER -->LB --->BACKEND(real server) nginx SERVICE --->很多的endpoint--》po…...
从零打造你的AI图像放大神器:waifu2x-caffe完全指南
从零打造你的AI图像放大神器:waifu2x-caffe完全指南 【免费下载链接】waifu2x-caffe waifu2xのCaffe版 项目地址: https://gitcode.com/gh_mirrors/wa/waifu2x-caffe 想象一下,你珍藏多年的动漫壁纸分辨率太低,无法作为4K显示器背景&a…...
AI工作流编排利器:OpenClaw Workflow Kit 模块化设计与实战
1. 项目概述:一个为AI工作流打造的“瑞士军刀”最近在GitHub上看到一个挺有意思的项目,叫leilong611-ai/openclaw-workflow-kit。光看这个名字,你可能会有点懵:“OpenClaw”是啥?“Workflow Kit”又是干嘛的࿱…...
一键转载革命:auto_feed_js如何让PT资源分享效率提升10倍
一键转载革命:auto_feed_js如何让PT资源分享效率提升10倍 【免费下载链接】auto_feed_js PT站一键转载脚本 项目地址: https://gitcode.com/gh_mirrors/au/auto_feed_js 在PT(Private Tracker)社区中,资源分享是一项既重要…...
告别导入报错!手把手教你用Navicat把Excel数据完美搬进MySQL(含字段超限处理)
从Excel到MySQL:Navicat数据迁移全流程实战指南 数据迁移是开发者和数据分析师日常工作中的高频需求。想象一下这样的场景:市场部门发来一份包含3000条客户信息的Excel表格,需要快速导入到测试环境的MySQL数据库中进行功能验证;或…...
ISO14443协议扫盲:别再只盯着‘读卡号’,APDU才是智能卡应用的灵魂
ISO14443协议进阶指南:从读卡号到APDU指令深度解析 当你第一次把卡片贴近读卡器,看到屏幕上跳出那串UID号码时,那种成就感确实令人兴奋。但很快你会发现,这串数字就像一扇紧闭的大门——你知道门后藏着更多可能性,却找…...
AI提示工程与创意工作流:Claude+Cursor高效协作心法
1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目,叫 zupp6869/claude-cursor-tips-for-creatives 。光看名字,你可能觉得这又是一个关于AI代码助手Cursor的普通教程合集。但如果你点进去,特别是你本身从事创意、设计、内容创作…...
node.js、node、nvm、npm、npx的关系
1、node.js Node.js:一个基于Chrome V8引擎的JavaScript运行环境。Node.js是一个开源的、跨平台的JavaScript运行环境,用于在服务器端运行JavaScript代码。它使得开发人员可以使用JavaScript来编写服务器端应用程序,从而简化了开发过程&#…...
多目标跟踪(Multi-Object Tracking, MOT)中的核心算法介绍:卡尔曼滤波算法和匈牙利算法
卡尔曼滤波算法和匈牙利算法两者都是多目标跟踪(Multi-Object Tracking, MOT)中的核心算法,但解决的是完全不同的问题。简单来说: 卡尔曼滤波:负责“预测未来”和“修正当前”。它帮你推测目标下一刻会出现在哪里。匈…...
为什么数据科学家都爱用Spyder?这6个独特优势让你告别Python开发烦恼! [特殊字符]
为什么数据科学家都爱用Spyder?这6个独特优势让你告别Python开发烦恼! 😊 【免费下载链接】spyder Official repository for Spyder - The Scientific Python Development Environment 项目地址: https://gitcode.com/gh_mirrors/sp/spyder…...
SAP ABAP BADI AC_DOCUMENT:跨越VF01/MIRO/AFAB的智能凭证替代实战
1. 为什么需要AC_DOCUMENT BADI? 在SAP标准业务流程中,GGB1提供的凭证替代功能已经能满足大部分常规需求。但实际业务往往更复杂——比如销售开票时,需要根据付款条件动态替换税科目;发票校验时,要根据供应商信息自动填…...
