python脚本处理excel文件
1.对比perl和python
分别尝试用perl和python处理excel文件,发现perl的比较复杂,比如说read excel就有很多方式
Spreadsheet::Read
use Spreadsheet::ParseExcel
不同的method,对应的取sheet的cell方式也不一样。更复杂的是处理含有中文内容的Excel。用perl目前没有成功过。
对于python来说就比较简单,目前使用openpyxl库,处理起来清晰明了
2.python处理excel实例
下面给出一个python处理Excel的实例
用python完成两个excel合并,要求如下:
1. 24xiaoxue.xlsx有A-G列,24zhongxue.xlsx有A-G列
2.用24zhongxue.xlsx的D列匹配24xiaoxue.xlsx的D列,如果有相同项,将24xiaoxue.xlsx相同项所在行添加到24zhongxue.xlsx行尾,并输出到新的excel
3.支持中文内容
编码声明需要放在文件的第一行或第二行,一般使用 # -*- coding: 编码格式 -*- 这种形式。常见的编码格式有 utf-8、gbk、gb2312 等。
# -*- coding: gb2312 -*- #for 中文支持
import openpyxl# 定义文件路径
file1 = '24zhongxue - 副本.xlsx' # 小学文件
file2 = '24xiaoxue - 副本.xlsx' # 中学文件
#file1 = 'xxxx.xlsx' # 小学文件
#file2 = 'xxxx.xlsx' # 中学文件
output_file = 'merged_result.xlsx' # 输出文件# 加载两个Excel文件
wb1 = openpyxl.load_workbook(file1)
wb2 = openpyxl.load_workbook(file2)# 获取第一个工作表
ws1 = wb1.active
ws2 = wb2.active# 创建一个新的工作簿用于保存结果
wb_result = openpyxl.Workbook()
ws_result = wb_result.active# 将24zhongxue.xlsx的标题行复制到新工作簿
for col in range(1, 8): # A-G列for row in range(1,ws2.max_row+1):ws_result.cell(row=row, column=col).value = ws2.cell(row=row, column=col).value# 创建一个字典,用于存储24xiaoxue.xlsx中D列的值和对应的行
match_dict = {}
for row in range(1, ws1.max_row + 1): # 从第1行开始key = ws1.cell(row=row, column=4).value # D列的值if key:match_dict[key] = row# 遍历24zhongxue.xlsx的D列,查找匹配项
row_count = 1 # 新工作簿的行计数器
for row in range(1, ws2.max_row + 1): # 从第1行开始key = ws2.cell(row=row, column=4).value # D列的值if key and key in match_dict:# 如果找到匹配项,将24xiaoxue.xlsx中匹配的行复制到新工作簿matched_row = match_dict[key]for col in range(1, 8): # A-G列ws_result.cell(row=row, column=col+10).value = ws1.cell(row=matched_row, column=col).valuerow_count += 1else:# 如果没有找到匹配项,将24zhongxue.xlsx的当前行复制到新工作簿#for couse Spreadsheet::ParseExcell in range(1, 8): # A-G列# ws_result.cell(row=row_count, column=col).value = ws2.cell(row=row, column=col).valuerow_count += 1# 保存结果到新的Excel文件
wb_result.save(output_file)print(f"合并完成,结果已保存到 {output_file}")
相关文章:
python脚本处理excel文件
1.对比perl和python 分别尝试用perl和python处理excel文件,发现perl的比较复杂,比如说read excel就有很多方式 Spreadsheet::Read use Spreadsheet::ParseExcel 不同的method,对应的取sheet的cell方式也不一样。更复杂的是处理含有中文内…...
【腾讯云架构师技术沙龙2025.03.22】
大模型技术演进与行业影响分析 日期:2025年3月22日 主讲人:李建忠 《DeepSeek实战驱动行业智变—AI应用寒武纪》 整理:飞书语音转化DeepSeek分析汇总 一、技术演进:从快思考到慢思考 1. 早期争议与能力局限(2022-202…...
【SOC 芯片设计 DFT 学习专栏 -- IDDQ 测试 与 Burn-In 测试】
文章目录 IDDQ 测试与 Burn-In 测试IDDQ 测试工作原理测试过程优点局限性示例 2. Burn-In 测试工作原理测试过程优点局限性示例 总结对比 IDDQ 测试和 Burn-in 测试: IDDQ 测试与 Burn-In 测试 本文将详细介绍 DFT 中 IDDQ测试 和 burn-in测试模式 IDDQ 测试 IDD…...
Axure RP 9.0教程: 基于动态面板的元件跟随来实现【音量滑块】
文章目录 引言I 音量滑块的实现步骤添加底层边框添加覆盖层基于覆盖层创建动态面板添加滑块按钮设置滑块拖动效果引言 音量滑块在播放器类APP应用场景相对较广,例如调节视频的亮度、声音等等。 I 音量滑块的实现步骤 添加底层边框 在画布中添加一个矩形框:500 x 32,圆…...
JS—call,apply,bind:1分钟掌握三者的区别
个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–call三–apply四–bind五–三者对比 二. call 作用: 立即调用函数,显式指定this值,并逐个传递参数。 语法: func.call(thisArg, arg1, arg2, …) 特点&…...
Linux TTY设备汇总
目录 1. tty(终端设备统称) 2. ptm(伪终端主设备)与pts(伪终端从设备) 3. ttys(串行端口终端) 4. ttyACM(USB CDC ACM设备) 5. ttyGS(USB Gadget Serial设备) 主要联系 典型应用场景 TTY_CORE: drivers/tty/tty_io.c:tty_register_driver…...
WPF 与 C# 开发深度剖析
一、引言 在当今的软件开发领域,Windows 平台依旧占据着重要的地位。而 WPF(Windows Presentation Foundation)作为微软推出的一款强大的用户界面(UI)框架,为开发者提供了丰富的功能和灵活的设计方式&…...
好消息!软航文档控件(NTKO WebOffice)在Chrome 133版本上提示扩展已停用的解决方案
软航文档控件现有版本依赖Manifest V2扩展技术支持才能正常运行,然而这个扩展技术到2025年6月在Chrome高版本上就彻底不支持了,现在Chrome 133开始的版本已经开始弹出警告,必须手工开启扩展支持才能正常运行。那么如何解决这个技术难题呢&…...
通过仿真确定抗积分饱和策略的最佳系数
通过仿真确定抗积分饱和策略的最佳系数(如PID参数 ( K_p, K_i, K_d ) 以及抗饱和参数 ( K_{\text{back}} )、积分限幅值等)是一个系统化的过程。以下是具体步骤和示例: — 1. 建立仿真模型 1.1 模型组成 被控对象:例如电机、温…...
消息队列(Kafka及RocketMQ等对比联系)
目录 消息队列 一、为什么使用消息队列?消息队列有什么优点/缺点?介绍下Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优点缺点,如何取舍? 1.公司业务场景是什么,这个业务场景有什么挑战,如果不用MQ有什么麻…...
GitHub开源的容器管理面板-Dpanel
dpanel Docker安装部署二进制部署 GitHub官网 一块轻量化docker可视化管理面板,由国人开发,个人觉得是比较好用的,功能都很齐全,并且可以通过修改源码,自定义前端样式等。 Docker安装部署 官网 部署环境࿱…...
【HarmonyOS Next】三天撸一个BLE调试精灵
【HarmonyOS Next】三天撸一个BLE调试精灵 一、功能介绍 BLE调试精灵APP属于工具类APP,在用户使用的过程中,负责调试BLE设备从机端,比如蓝牙耳机、低功耗设备、带有BLE的空调等设备,可以在页面中清晰看到设备的厂商,…...
java 批量下载doc\excle\pdf
指定图片集合 下载到指定文件夹 import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Arrays; import java.util.List;public class OfficeFileDownloader {/*** 需要下载的Office文档URL列表*/private static final List<Strin…...
软件性能效率测试工具有哪些?专业第三方软件检测机构推荐
在软件开发的新时代,软件性能效率测试已经成为每个企业不可或缺的一部分。无论是在竞争激烈的市场中,还是在追求卓越用户体验的过程中,都需要进行有效的性能测试。 一、软件性能效率测试的目标 1、响应时间:确保用户请求的响…...
使用flask_restful快速构建接口
Flask-RESTful 是一个用于快速构建 RESTful API 的 Flask 扩展。它简化了创建、管理和文档化 REST API 的过程。利用 Flask-RESTful,你可以更容易地将你的 Flask 应用程序组织成 RESTful 原则的风格 安装包 pip install flask_restful 快速构建接口 from flask im…...
centos 7 部署FTP 服务用shell 搭建脚本,使用时稍微修改自己所需需求
#!/bin/bash # 检查是否为 root 用户 if [ "$(id -u)" ! "0" ]; then echo "此脚本需要以 root 用户身份运行。" exit 1 fi # 安装 vsftpd yum install vsftpd -y # 备份原始配置文件 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd…...
Hadoop集群搭建(hdfs、yarn)
Hadoop 是 Apache 软件基金会旗下的一个开源项目,是用于处理大数据的分布式系统基础架构,被广泛应用于大数据存储、处理和分析等场景。 一、核心组件 1、Hadoop 分布式文件系统(HDFS) 具有高容错性,能在低成本硬件上…...
PyArrow 和 Parquet 的组合通过内存优化和高效存储,显著提升大数据处理的性能
PyArrow 和 Apache Parquet 是处理大规模数据的高效工具组合,它们结合了内存优化和列式存储的优势,适用于多种大数据场景。以下是对两者的详细解析及其协同工作的方式: ### 1. **PyArrow 的核心作用** - **Apache Arrow 实现**࿱…...
Oracle数据库服务器地址变更与监听配置修改完整指南
一、前言 在企业IT运维中,Oracle数据库服务器地址变更是常见的运维操作。本文将详细介绍如何安全、高效地完成Oracle数据库服务器地址变更及相关的监听配置修改工作,确保数据库服务在迁移后能够正常运行。 二、准备工作 1. 环境检查 确认新旧服务器I…...
2025.03.23【前沿工具】| CellPhoneDB:基因网络分析与可视化的利器
文章目录 1. CellPhoneDB工具简介2. CellPhoneDB的安装方法3. CellPhoneDB常用命令 1. CellPhoneDB工具简介 在单细胞生物学的迅猛发展中,理解细胞间的通讯机制对于揭示组织功能和疾病状态至关重要。CellPhoneDB工具,作为一个专门设计用来分析单细胞转录…...
Keepalived 实现高可用方案
Keepalived简介 Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol)协议的高可用性解决方案,主要用于实现服务故障自动切换(Failover)和负载均衡。通过管理虚拟 IP(VIP…...
如何使用DeepSeek编写测试用例?
一、DeepSeek在测试用例设计中的定位 DeepSeek作为AI工具,并非直接替代测试设计,而是通过以下方式提升效率: 快速生成基础用例框架(等价类、边界值等) 智能补充易遗漏场景(如特殊字符、异常流) 自动化脚本片段生成(Python/pytest/JUnit等) 测试数据构造建议(符合业务…...
python暴力破解html表单
import requests import time# 目标URL url "http://192.168.3.101/pikachu/vul/burteforce/bf_form.php" # 请替换为实际的目标URL# 已知的用户名 username "admin"# 密码字典文件路径 password_file "passwords.txt"# 伪造请求头ÿ…...
医学图像分割数据集肺分割数据labelme格式6299张2类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图像分辨率:1024x1024 图片数量(jpg文件个数):6299 标注数量(json文件个数):6299 标注类别数:2 标注类别名称:["leftl…...
C语言复习笔记--函数递归
在学习了函数之后,函数递归是我们必然会接触到的课题,下面就让我们看下函数递归相关的知识. 递归是什么? 递归这个词看着就不那么好理解,那么什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数自己调用自己. 写⼀个史上最简单的C语⾔递归代码: …...
Day39 | 724. 寻找数组的中心下标、34. 在排序数组中查找元素的第一个和最后一个位置、922. 按奇偶排序数组 II、35. 搜索插入位置
724. 寻找数组的中心下标 题目链接:724. 寻找数组的中心下标 - 力扣(LeetCode) 题目难度:简单 代码: class Solution {public int pivotIndex(int[] nums) {int sum0;for(int i0;i<nums.length;i){sumnums[i];}…...
husky的简介以及如果想要放飞自我的解决方案
husky 是一个 Git Hooks 管理工具,它的主要作用是 在 Git 提交(commit)、推送(push)等操作时执行自定义脚本,比如代码检查(Lint)、单元测试(Test)、格式化代码…...
怎么查看linux是Ubuntu还是centos
要确定你的Linux系统是基于Ubuntu还是CentOS,可以通过几种不同的方法来进行判断。下面是一些常用的方法: 要快速判断 Linux 系统是 Ubuntu 还是 CentOS,可通过以下方法综合验证: 一、查看系统信息文件 1. /etc/os-release 文件…...
侯捷 C++ 课程学习笔记:现代 C++ 中的移动语义与完美转发深度解析
1. 前言:为什么我们需要移动语义? 在侯捷老师的《C11/14/17 新特性详解》课程中,移动语义(Move Semantics)被称作"C近十年来最重要的革新"。传统C中饱受诟病的深拷贝性能问题,在现代C中通过移动语…...
微服务中的服务发现与注册中心
在微服务架构中,服务实例的数量可能随着流量负载自动扩展或缩减,因此服务之间如何高效地进行通信成为一个重要问题。本篇博客将介绍服务发现的概念,并结合 Consul 和 自定义注册中心 进行实践,帮助开发者在微服务架构下高效管理服…...
